2015-11-13 73 views
0

我有一个具有可观察数组的knockout.js应用程序。我已经为可观察数组添加了一个过滤器。过滤工作正常。问题是我正在调用另一个函数,因为我正在过滤数据。这里是我的功能:问题筛选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()); 
     } 
    }; 

似乎有一个滞后。我打电话addmarker,而我做的过滤。

我贴的所有的代码放到一个的jsfiddle显示的就是我做的一个例子: https://jsfiddle.net/maL3zqgq/5/

回答

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/

+0

如果我回答你的问题,你能接受我的答案吗?谢谢。 –

相关问题