假设我的observable数组包含一个选定属性的标记列表:
myModel = {
tags: ko.observableArray([
{name: "tag1", selected: ko.observable()},
{name: "tag2", selected: ko.observable(true)},
...
])
}
现在我希望标签数组基于selected()
属性动态排序,比如说如果选择了标签,那么它应该移动到列表的顶部。
知道如何完成这项工作吗?
答案 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,它将始终在选定的更改时进行排序。