首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用KnockoutJS应用多个过滤器

问使用KnockoutJS应用多个过滤器
EN

Stack Overflow用户
提问于 2014-04-23 20:57:33
回答 1查看 564关注 0票数 1

我一直在关注这个教程:http://ryanrahlf.com/filtering-table-data-with-knockout-js/和我想知道是否有一种方法可以应用多个过滤器。一般来说,我是网页设计的新手,对于knockout或javascript,我并不熟悉。我发现了另一个类似的问题,它有一个建议的解决方案,但没有工作的代码示例。一旦我到了filteredPeople计算器,我就一直在努力让它工作,所以我把它留在这个问题上。

代码语言:javascript
复制
self.filters = [
    {title:'Show All', filter: null, isSelected: ko.observable(false)},
    {title:'Only Smith', filter: function(item){return item.lastName == 'Smith';}, isSelected: ko.observable(false)},
    {title:'Only Jones', filter: function(item){return item.lastName == 'Jones';}, isSelected: ko.observable(false)},
    {title:'Only Adults', filter: function(item){return item.age >= 18; }}
    ];
self.filteredPeople = ko.computed(function(){
    var result;
    if(self.activeFilter()){
        result = ko.utils.arrayFilter(self.people(), self.activeFilter());
    }
    else{
        result = self.people;
    }
    return result.sort(self.activeSort());
 }

因此,我想问的是,如何才能根据filters数组中的.isSelected()属性将self.filteredPeople更改为自动更新并将过滤器链接在一起?我想删除.activeFilter()和.setActiveFilter()方法,并使用isSelected observable。

类似的问题和一种答案:Adding and removing multiple filters in Knockout JS

我的带有完整代码的JSFiddle:http://jsfiddle.net/L4Lsm/

EN

回答 1

Stack Overflow用户

发布于 2014-04-23 21:35:17

如果您只是遍历所有筛选器,以确定在计算的filteredPeople中将isSelected设置为true的筛选器,那么一旦self.filters数组中的任何筛选器上的一个isSelected可观测对象发生更改,它就应该自动更新。此外,如果您能够添加筛选器,则需要将self.filters定义为observableArray本身。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23245034

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档