维护一个有序的ObservableArray

Maintain a sorted ObservableArray

本文关键字:ObservableArray 一个 维护      更新时间:2023-09-26

我希望ko.observableArray保持自己的排序顺序,其中排序顺序依赖于每个项的计算属性。

I'd like this work:

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)
});

工作!