gpt4 book ai didi

javascript - 计算返回一个排序的 observableArray

转载 作者:行者123 更新时间:2023-11-30 10:33:21 29 4
gpt4 key购买 nike

我有一个计算的可观察对象,它返回我的 observableArray 的过滤、排序版本,但排序根本不起作用。

这里是 My fiddle

String.prototype.contains = function (value) {
return this.indexOf(value) != -1;
};

function Item(data) {
this.name = ko.observable(data);
}

function ViewModel() {
var self = this;
this.items = ko.observableArray([new Item('John'), new Item('Pat')]);
this.filterValue = ko.observable();

this.filteredItems = ko.computed(function() {
var filterValue = self.filterValue();

if(!filterValue)
return self.items();

return ko.utils.arrayFilter(self.items(), function(){
return item.name().toLowerCase().contains(filterValue.toLowerCase());
}).sort(function(a,b){
return a.name == b.name ? 0 : (a.name < b.name ? -1 : 1);
});
});
}

答案这是更新 fiddle

最佳答案

正如@Paul Manzotti 指出的那样,您的排序函数没有正确访问“名称”属性。此外,您的“filterValue”是undefined,因此您的函数在它进入排序之前就退出了。

像这样的东西会让它工作:

    var filtered = filterValue ? ko.utils.arrayFilter(self.items(), function(item){
return item.name().toLowerCase().contains(filterValue.toLowerCase());
}) : self.items();

return filtered.sort(function(a,b){
return a.name() == b.name() ? 0 : (a.name() < b.name() ? -1 : 1);
});

关于javascript - 计算返回一个排序的 observableArray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15552074/

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