gpt4 book ai didi

javascript - 使用 KnockoutJS 应用多个过滤器

转载 作者:行者123 更新时间:2023-11-28 08:18:56 25 4
gpt4 key购买 nike

我一直在关注这个教程: http://ryanrahlf.com/filtering-table-data-with-knockout-js/我想知道是否有办法应用多个过滤器。总的来说,我对网页设计还是个新手,在 knockout 或 JavaScript 方面还没有我的基础。我发现了另一个与此类似的问题,它有一个建议的解决方案,但没有有效的代码示例。一旦我计算出filteredPeople,我就一直在努力让它工作,所以我把它留给了这个问题。

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

所以我要问的是如何将 self.filteredPeople 更改为自动更新并将过滤器基于过滤器数组中的 .isSelected() 属性链接在一起?我想删除 .activeFilter() 和 .setActiveFilter() 方法并使用 isSelected observable。

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

我的 JSFiddle 包含完整代码: http://jsfiddle.net/L4Lsm/

最佳答案

如果你只是循环遍历你的所有过滤器来确定你的filteredPeople中哪个过滤器的isSelected设置为true,那么一旦self.filters数组中的任何过滤器上的isSelected可观察值之一发生变化,它应该自动更新。另外,如果您能够添加过滤器,您将需要将 self.filters 定义为 observableArray 本身。

关于javascript - 使用 KnockoutJS 应用多个过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23245034/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com