javascript - 维护一个排序的 ObservableArray

标签 javascript knockout-2.0

我想要一个 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/

相关文章:

javascript - 将具有可观察属性的对象推送到可观察数组中仍然会跟踪对象的属性。

javascript - 使用 Knockout js 自定义绑定(bind) div

javascript - 越南语 slugfy 的问题

javascript - 如果用户删除单词则运行函数

javascript - 使用 plotly.js 动画功能

javascript - d3 位于 x 轴下方的 x 轴标签

javascript - knockout 计算仅在 IE 中给出函数预期错误

knockout.js - KnockoutJS - if 绑定(bind)性能

javascript - 如何在 KnockoutJS 中的 ajax 调用后更新数组中的特定元素

JavaScript 变量在 Laravel 中不起作用