我不明白 - 为什么在这个例子中当列表是一个可观察数组时我可以对这个表进行排序,但是在这个例子中,一个数组不是一个可观察数组,但所有项目都作为可观察对象 - 它没有。
当我也将数组的所有项目都作为可观察对象时,如何进行排序?
使用此数组,排序按预期工作
this.allItems = ko.observableArray([
{name:"Annabelle"},
{name:"Vertie"},
{name:"Charles"}
]);
但有了这个,它不会
var ListSortModel = function () {
this.allItems = ko.mapping.fromJS([
{name:"Annabelle"},
{name:"Vertie"},
{name:"Charles"}
]);
您的ko.mapping
插件循环遍历您的内部对象并使属性observable
. IE:
this.allItems = ko.observableArray([
{ name: ko.observable("Annabelle") },
{ name: ko.observable("Vertie") },
{ name: ko.observable("Charles") }
]);
像a.name < b.name
现在这样的比较比较两个 observable 实例,它不能真正做到……您需要比较 observables 的内部值,您可以通过调用它们来检索:obj.name()
。
因此,对于映射版本,您需要使用a.name() < b.name()
而不是a.name < b.name
.
附加说明:使用可能更好 return a.name().localeCompare(b.name());
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句