2014-01-25 6 views
0

У меня проблемы с удалением объекта из моего наблюдаемого массива.Не удается удалить объект из нокаута наблюдаемогоArray

Это заявление:

self.points = ko.observableArray([]); 

Он держит:

self.map.points.push(new google.maps.LatLng(a, b)); 

Я пытаюсь удалить некоторые элементы из этого массива, используя этот код:

self.points.remove(val.internalMarker.position) 

Где val.internalMarker.position УДЕРЖИВАЙТЕ тот же объект LatLong, инициализированный теми же значениями, что и эта точка.

Но по неизвестной причине удалить функцию оставляет массив нетронутым.

Here You can check my full code on JSFiddle

+1

Они не относятся к одному и тому же объекту 'LatLng'. –

+0

Это 'val.internalMarker' или' val.InternalMarker'? – danludwig

ответ

4

Вы пробовали это?

self.points.remove(function(pos) { 
    return pos.lat() == val.internalMarker.postition.lat() 
     && pos.lng() == val.internalMarker.postition.lng(); 
}) 

observableArray.remove перегрузка KNOCKOUT, которая принимает один параметр не будет работать, если объект, который вы хотите удалить, точно такой же объект. В вашем вопросе звучит так, что LatLng - это не тот же самый точный объект, просто он содержит точные точные значения lat & lng. В этих случаях вам нужно передать функцию, которая сравнивает значения, которые вас интересуют между двумя объектами объекта.

Смежные вопросы