无法从knockout observableArray中删除对象

时间:2014-01-25 15:26:59

标签: javascript google-maps-api-3 knockout.js

我从可观察数组中删除对象时遇到了麻烦。

宣言:

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 个答案:

答案 0 :(得分:4)

你试过这个吗?

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

除非您要删除的对象是完全相同的对象,否则使用单个参数的Knockout的observableArray.remove重载将不起作用。在你的问题中,听起来LatLng不是完全相同的对象,只是它包含相同的lat& lng值。在这些情况下,您必须传递一个函数,该函数将您感兴趣的值与两个对象实例进行比较。