我有一个具有计算属性
的Knockout应用程序 this.sortedItems = ko.computed(function() {
return self.allItems().sort(function(a, b) {
return a.name() > b.name();
});
}, this);
我对这个应用程序有一个小提琴,其中包含10个数组项http://jsfiddle.net/GSvnh/5925/,其中所有内容都在开头排序,并在项目更改时排序 - 按预期工作。
然后我有完全相同的代码,但有100个项目,没有任何排序 - 它既不是在开头排序也不是在项目被更改时排序http://jsfiddle.net/GSvnh/5926/
这可能是什么原因?
答案 0 :(得分:3)
对于排序数字,返回差异,因为这是正确的方法。
return self.allItems().sort(function(a, b) {
return a.name() -b.name();
});
检查以下MDN docs:
中的说明如果提供compareFunction,则根据compare函数的返回值对数组元素进行排序。如果a和b是要比较的两个元素,那么: