动态排序KnockoutJS可观察数组元素

时间:2014-11-09 02:37:41

标签: knockout.js

假设我的observable数组包含一个选定属性的标记列表:

myModel = {
 tags: ko.observableArray([
   {name: "tag1", selected: ko.observable()},
   {name: "tag2", selected: ko.observable(true)},
   ...
 ])
} 

现在我希望标签数组基于selected()属性动态排序,比如说如果选择了标签,那么它应该移动到列表的顶部。

知道如何完成这项工作吗?

1 个答案:

答案 0 :(得分:1)

您可以轻松地使用此处的计算来确保选择的更改时重新排序 -

var alphabeticalOrderSort = function (l, r) { return (l.selected() == r.selected()) ? (l.selected() > r.selected() ? 1 : -1) : (l.selected() > r.selected() ? 1 : -1) };

computedTags: ko.computed(function () {
    return tags().sort(sortFunction);
})

您将需要测试自己的排序函数以实现您的工作方式,但现在如果将视图绑定到computedTags,它将始终在选定的更改时进行排序。