发出过滤Knockout.js可观察数组

时间:2015-11-13 22:10:34

标签: javascript knockout.js knockout-2.0

我有一个具有可观察数组的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/

1 个答案:

答案 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());
         });

https://jsfiddle.net/mbest/maL3zqgq/6/