カスタムバインディングの作成に問題があります。私が理解していることから、バインディングの更新コールバックは、ビューモデルが変更されるたびに発生するはずです。
小さな例を作成しました。
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());
});
そこで、ボタンにバインディングを取り付けます。バインディングの更新は一度実行され、その後、オブザーバブルのデータを変更しても、二度と実行されません。
このアプローチを使用して、canExecuteバインディングを実装したいと思います。