2

我想要一个ko.observableArray维护自己的排序顺序的排序顺序,其中排序顺序取决于每个项目的计算属性。

我希望这个工作:

var threads = ko.observableArray().extend({ sorted: Thread.desc });

我有一个使用扩展器的尝试jsfiddle,但是对子 observable 的更改不会导致重新排序。

这是 ko 应该如何工作,还是我错过了一步?

编辑:原来我有依赖错误。更改messages不会标记threads为已更改,即使preview在 sort 方法中调用,所以它当然不会排序。

仍然通过依赖孩子来制定一个简洁的解决方案来维护排序列表。

4

1 回答 1

2

我最终选择了http://jsfiddle.net/E49Y3/11/,我只保留了一个单独的计算属性:

model.threads = ko.observableArray();
model.threadsDesc = ko.computed(function(){
    return model.threads().sort(Thread.desc)
});

作品!

于 2013-05-24T03:29:46.200 回答