Javascript 返回排序的ObservalArray的计算
我有一个计算的observable,它返回我的ObservalArray的过滤、排序版本,但排序根本不起作用 这是 答案 以下是更新信息您的排序函数没有正确调用可观察对象:Javascript 返回排序的ObservalArray的计算,javascript,knockout.js,Javascript,Knockout.js,我有一个计算的observable,它返回我的ObservalArray的过滤、排序版本,但排序根本不起作用 这是 答案 以下是更新信息您的排序函数没有正确调用可观察对象: .sort(function(a,b){ return a.name() == b.name() ? 0 : (a.name() < b.name() ? -1 : 1); }) 我也更新了您的,这似乎有效。您的排序函数没有正确调用可观察对象: .sort(function(a,b){
.sort(function(a,b){
return a.name() == b.name() ? 0 : (a.name() < b.name() ? -1 : 1);
})
我也更新了您的,这似乎有效。您的排序函数没有正确调用可观察对象:
.sort(function(a,b){
return a.name() == b.name() ? 0 : (a.name() < b.name() ? -1 : 1);
})
我也更新了您的,这似乎有效。正如@Paul Manzotti所指出的,您的排序函数无法正确访问名称属性。此外,filterValue未定义,因此函数在进行排序之前退出 像这样的东西可以让它工作:
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);
});
正如@Paul Manzotti所指出的,排序函数没有正确访问名称属性。此外,filterValue未定义,因此函数在进行排序之前退出 像这样的东西可以让它工作:
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);
});
您没有在任何地方声明和设置自变量。编辑哦,你是在摆弄-这是令人沮丧的问题时,包含不准确的代码:修复,很抱歉,你没有声明和设置自变量的任何地方。编辑哦,你是在摆弄-当问题包含不准确的代码时,这是令人沮丧的:修复了,很抱歉,排序只在问题中应用过滤器时进行,所以这就是我实现的。在过滤盒中键入a,布兰登将走在帕特前面。是的,这是真的;很难说出OP想要什么:-是的,这就是为什么我试着坚持提问的原因!不过你说得对,我想他们确实希望对整个事情进行排序——因为如果不进行过滤,排序会更有用!是的,它应该在每次读取计算值时进行排序,也就是在它最初加载时。好吧,我知道我做错了什么,如果filterValue没有值,那么我只是返回未排序的数组,但是如果有filterValue,那么它就被排序了。排序只在问题中应用筛选器时进行,这就是我实现的。在过滤盒中键入a,布兰登将走在帕特前面。是的,这是真的;很难说出OP想要什么:-是的,这就是为什么我试着坚持提问的原因!不过你说得对,我想他们确实希望对整个事情进行排序——因为如果不进行过滤,排序会更有用!是的,每次读取计算值时都应该对其进行排序,也就是它最初加载时。好的,我知道我做错了什么,如果filterValue没有值,那么我只是返回未排序的数组,但是如果有filterValue,那么它就被排序了。好的,我知道我做错了什么,如果filterValue没有值,那么我只是返回未排序的数组,但是如果有filterValue,那么它被排序。好的,我知道我做错了什么,如果filterValue没有值,那么我只是返回未排序的数组,但是如果有filterValue,那么它被排序。