我在创建自定义绑定时遇到了一些问题。根据我的理解,每次视图模型更改时都应触发绑定的更新回调。
我创建了一个小例子。
http://jsfiddle.net/alexmaie/pbEmS/
ko.bindingHandlers.testBinding = {
update: function(element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
//just for testing purposes
alert("update");
}
};
$(document).ready(function() {
function AppViewModel() {
var self = this;
self.firstName = ko.observable("Bert");
}
ko.applyBindings(new AppViewModel());
});
我将按钮附加到按钮上。即使我更改了observable的数据,绑定的更新也会执行一次,然后再也不会再次执行。
我想使用这种方法来实现canExecute绑定。
答案 0 :(得分:1)
绑定是在computed observable
内实现的,因此它们会根据实际访问的observable / computed来跟踪依赖关系。
因此,这意味着在update
函数中,您需要访问传递给它的observable的值,如:
ko.bindingHandlers.testBinding = {
update: function(element, valueAccessor) {
//dependency is created here
var value = ko.utils.unwrapObservable(valueAccessor());
alert("update " + value);
}
}