gpt4 book ai didi

javascript - 对 knockout 中的可观察值列表进行排序

转载 作者:太空宇宙 更新时间:2023-11-04 15:36:14 24 4
gpt4 key购买 nike

我不明白 - 为什么在 this例如,当列表是可观察数组时,我可以对该表进行排序,但在 this 中例如,数组不是可观察数组,但将所有项目都作为可观察对象 - 但事实并非如此。

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

使用此数组,排序可以按预期进行

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 。即:

this.allItems = ko.observableArray([
{ name: ko.observable("Annabelle") },
{ name: ko.observable("Vertie") },
{ name: ko.observable("Charles") }
]);

类似 a.name < b.name 的比较现在比较两个可观察实例,但它实际上无法做到这一点...您需要比较可观察对象的内部值,您可以通过调用它们来检索它们: obj.name() .

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

附加说明:使用 return a.name().localeCompare(b.name()); 可能更好

关于javascript - 对 knockout 中的可观察值列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44331264/

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