0

我在创建自定义绑定时遇到了一些问题。据我了解,绑定的更新回调应该在每次视图模型更改时触发。

我创建了一个小例子。

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 绑定。

4

1 回答 1

1

绑定在 a 内部实现computed observable,因此它们根据实际访问的 observables/computeds 跟踪依赖关系。

因此,这意味着在您的update函数中,您可能希望访问传递给它的 observable 的值,如下所示:

   ko.bindingHandlers.testBinding = {   
      update: function(element, valueAccessor) {
         //dependency is created here
         var value = ko.utils.unwrapObservable(valueAccessor());
         alert("update " + value);
      }
   }

更新小提琴:http: //jsfiddle.net/rniemeyer/pbEmS/2/

于 2013-01-04T20:56:10.393 回答