我想要一个 ko.observableArray
来维护自己的排序顺序,其中排序顺序取决于每个项目的计算属性。
我希望这个工作:
var threads = ko.observableArray().extend({ sorted: Thread.desc });
我有一个尝试jsfiddle使用扩展器,但对子可观察值的更改不会导致重新排序。
这是 ko 应该如何工作的,还是我错过了一个步骤?
编辑:事实证明我的依赖项错误。更改 messages
不会将 threads
标记为已更改,即使在排序方法中调用 preview
也是如此,所以它当然不会排序。
仍在制定一个简洁的解决方案,通过依赖子项来维护排序列表。
最佳答案
我最终选择了 http://jsfiddle.net/E49Y3/11/ ,我只保留一个单独的计算属性:
model.threads = ko.observableArray();
model.threadsDesc = ko.computed(function(){
return model.threads().sort(Thread.desc)
});
有效!
关于javascript - 维护一个排序的 ObservableArray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16724515/