我有一个具有多个可观察属性的淘汰模型:
var personViewModel = {
name: ko.observable('Bob'),
age: ko.observable(123)
};
我想创建一个呈现人视图模型的自定义绑定。但是,如果任何子属性(即name
or age
)被更新,我希望这个绑定能够更新。
使用 bindingHandler,update 方法仅在绑定的 observable 属性更新时触发,而不是在绑定的 observable 上的子属性更改时触发。
作为一种解决方法,我在init
函数中添加对子属性的订阅:
ko.bindingHandlers.foo = {
init: function (element, valueAccessor, allBindingsAccessor,
viewModel, bindingContext) {
// setup code goes here ... DOM elements inserted etc....
valueAccessor().age.subscribe(function () {
// Update the UI
});
valueAccessor().name.subscribe(function () {
// Update the UI
});
},
update: function (element, valueAccessor, allBindingsAccessor,
viewModel, bindingContext) {
// Update the UI
}
};
注意:这是一个简化的例子,我确实有一个通用的方法来订阅多个子 observables!
这是解决问题的好方法吗?还是我在这里忽略了一些内置的淘汰赛功能?