自动将ko.observableArray排序为绑定属性更改

时间:2012-06-22 07:32:56

标签: knockout.js

有没有办法在绑定属性更改时自动对可观察数组进行排序?我相信以下示例,当我添加一个新人时,我的视图会更新,但如果其中一个人的年龄发生了变化,我是否可以刷新视图并应用我的排序功能?

person = {
   age: ko.observable();
}

viewModel = {

   people: ko.observableArray([]),

   someSortFunction: function() {
       this.people.sort(function(person1, person2) {
           return person2.age() - person1.age();
       });
    }
}

<div data-bind="foreach: people">
   <span data-bind="text: age"/>
</div>

1 个答案:

答案 0 :(得分:3)

您可以订阅一个observable并在可观察的更改时执行操作:

person.age.subscribe(function (newValue) {
    viewModel.someSortFunction();
});