【问题标题】:Knockout custom binding on button按钮上的淘汰赛自定义绑定
【发布时间】:2015-11-13 22:01:15
【问题描述】:

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

我创建了一个小例子。

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

【问题讨论】:

    标签: knockout.js ko-custom-binding


    【解决方案1】:

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

    因此,这意味着在您的 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/

    【讨论】:

    • 嗨,感谢您的解释,我错过了创建 de 依赖关系的地方。
    猜你喜欢
    • 1970-01-01
    • 2013-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-07
    • 2016-08-13
    相关资源
    最近更新 更多