我从可观察数组中删除对象时遇到了麻烦。
宣言:
self.points = ko.observableArray([]);
它持有:
self.map.points.push(new google.maps.LatLng(a, b));
我正在尝试使用以下代码从此数组中删除一些元素:
self.points.remove(val.internalMarker.position)
val.internalMarker.position
保持使用与该点相同的值初始化相同的LatLong对象。
但由于未知原因,删除函数会使数组保持不变。
答案 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值。在这些情况下,您必须传递一个函数,该函数将您感兴趣的值与两个对象实例进行比较。