Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在淘汰中对可观察对象列表进行排序_Javascript_Arrays_Sorting_Knockout.js - Fatal编程技术网

Javascript 在淘汰中对可观察对象列表进行排序

Javascript 在淘汰中对可观察对象列表进行排序,javascript,arrays,sorting,knockout.js,Javascript,Arrays,Sorting,Knockout.js,我不明白——为什么在示例中,当列表是一个可观察数组时,我可以对这个表进行排序,但在示例中,数组不是一个可观察数组,但所有项都是可观察的——它没有 当我将所有数组的项都设置为可观察项时,如何进行排序 使用此数组,排序工作正常 this.allItems = ko.observableArray([ {name:"Annabelle"}, {name:"Vertie"}, {name:"Charles"} ]); 但有了这一点,情况就不一样了 var ListSortMod

我不明白——为什么在示例中,当列表是一个可观察数组时,我可以对这个表进行排序,但在示例中,数组不是一个可观察数组,但所有项都是可观察的——它没有

当我将所有数组的项都设置为可观察项时,如何进行排序

使用此数组,排序工作正常

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
插件在你的内部对象上循环,并使属性
可见。即:

this.allItems = ko.observableArray([
    { name: ko.observable("Annabelle") },
    { name: ko.observable("Vertie") },
    { name: ko.observable("Charles") }
]);
A.name
这样的比较现在可以比较两个可观察的实例,但实际上无法做到这一点。。。您需要比较可观察对象的内部值,可以通过调用它们来检索:
obj.name()

因此,对于映射版本,您需要使用
a.name()
而不是
a.name

附加说明:最好使用
返回a.name().localeCompare(b.name())