javascript - 问题过滤 Knockout.js 可观察数组

标签 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());
         }
     };

当我在进行过滤时调用 addmarker 时,似乎存在延迟。

我已将所有代码粘贴到 jsfiddle 中以展示我正在做的事情的示例: https://jsfiddle.net/maL3zqgq/5/

最佳答案

由于您是在过滤之前添加标记,因此您将看到上一个过滤器的结果。您需要在过滤后添加标记:

         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/

关于javascript - 问题过滤 Knockout.js 可观察数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33702598/

相关文章:

javascript - 单击复选框的绑定(bind)在 Knockout 中无法正常工作

javascript - 在 MVVM View 模型中处理应用程序范围的元素

knockout.js - Knockoutjs 数组过滤器

knockout.js - Knockout 映射插件或我的代码中存在数组错误?

javascript - Knockout.js 使用拦截器扩展值绑定(bind)

knockout.js - ko 计算未显示在 View 中

外部 js 文件中的 Asp.Net 脚本

javascript window.onload 作用域

javascript - 选择拼写检查语言

javascript - 小写除 AND 之外的所有单词