2017-06-02 60 views
1

我不明白 - 为什么在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"} 
]); 

回答

1

ko.mapping插件遍历你内心的对象,使性能observable。即:

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

像比较现在比较两个观察的情况下,它不能真的......你需要通过调用他们的观的内在价值,你可以检索比较:obj.name()

因此,与映射的版本,你需要使用a.name() < b.name(),而不是。

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