【问题标题】:Iterating search query through KnockoutJS Array通过 KnockoutJS 数组迭代搜索查询
【发布时间】:2018-02-16 22:24:04
【问题描述】:

如何对 KO observableArray() 进行实时更新排序,并对每个已排序的对象执行一个函数,并对剩余的对象执行另一个函数?

所以我有一个observableArray() 的 Google 地图标记。 100+,所以我正在尝试制定一个排序系统,根据它是否匹配特定的过滤器来显示或隐藏标记。我已经对应用程序中的绝大多数数据位使用了 knockoutJS,所以我试图弄清楚如何最好地实现这一点。我可以遍历数组并通过gMarkers()[i].title 获取标题,但我不确定如何通过另一个observable() 过滤这些项目。

我创建了userQuery() 来接受输入,所以我可以使用它进行排序。我认为这必须通过ko.computed() 来完成,但我不确定如何最好地更新它,因为它会随着人们的类型而即时改变(改变userQuery())。

是否有一种轻量级的方法来遍历数组并对依赖于排序的每个结果执行一个函数,还是我应该从不同的方式来解决这个问题?

【问题讨论】:

标签: javascript arrays google-maps sorting knockout.js


【解决方案1】:

使用(纯)计算:

/// .... in your viewmodel ....
this.filteredData = ko.pureComputed(function() {
     // query all observables the outcome depends on
     var query = self.userQuery();
     var ...   = ... 

     var fData = []; 
     // iterate over your dataset or use ko.utils.map / ko.utils.filter
     for (...) { 
         fData.push(...); 
     }
     return fData;
});

每当您依赖任何可观察的变化时,计算将重新计算。注意不要在依赖项中引入循环。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-11
    • 1970-01-01
    • 2016-05-21
    • 1970-01-01
    • 2018-09-18
    • 2018-09-20
    相关资源
    最近更新 更多