我有一个具有可观察数组的knockout.js应用程序。我在可观察数组中添加了一个过滤器。过滤工作正常。问题是我正在调用另一个函数,因为我正在过滤数据。这是我的功能:
self.filterResults = function(){
var value = self.searchInput().toLowerCase();
if(value != ''){
clearMarkers();
self.burgerList(self.burgerList().filter(function(data){
addmarker(data.lat(), data.long(), data.id(), data.name(), data.comments());
return data.name().toLowerCase().startsWith(value);
}));
}else{
showMarkers();
self.burgerList(self.burgerListClone());
}
};
当我正在进行过滤时,似乎有一个滞后,因为我正在调用添加标记。
我已将所有代码粘贴到jsfiddle中以显示我正在做的事情的示例: https://jsfiddle.net/maL3zqgq/5/
答案 0 :(得分:1)
由于您在过滤之前添加了标记,因此您会看到上一个过滤器的结果。您需要在过滤后添加标记:
self.burgerList(self.burgerList().filter(function(data){
return data.name().toLowerCase().startsWith(value);
}));
clearMarkers();
self.burgerList().forEach(function(data){
addmarker(data.lat(), data.long(), data.id(), data.name(), data.comments());
});