我希望ko.observableArray
保持自己的排序顺序,其中排序顺序取决于每个项目的计算属性。
我希望这项工作:
var threads = ko.observableArray().extend({ sorted: Thread.desc });
我有一个使用扩展器的尝试jsfiddle,但是对子可观察的更改不会导致重新排序。
这是ko应该如何工作,还是我错过了一步?
编辑:原来我的依赖关系错了。即使在排序方法中调用messages
,更改threads
也不会将preview
标记为已更改,因此当然不会对其进行排序。
仍在制定一个简洁的解决方案,通过依赖孩子来维护排序列表。
答案 0 :(得分:2)
我最终选择http://jsfiddle.net/E49Y3/11/,我只保留一个单独的计算属性:
model.threads = ko.observableArray();
model.threadsDesc = ko.computed(function(){
return model.threads().sort(Thread.desc)
});
作品!