【问题标题】:Knockout custom binding firing multiple times敲除自定义绑定多次触发
【发布时间】:2015-11-13 22:03:53
【问题描述】:

我有一个自定义绑定,它会为页面上使用相同绑定的每个元素触发,即。当我在第一个字段中输入文本时,此代码将触发 3 次绑定。

<input data-bind="pinTest: propertyOne" />
<input data-bind="pinTest: propertyTwo" />
<input data-bind="pinTest: propertyThree" />

如何让它只触发一次?我试过淘汰赛 v2.3 和 v3。

我在http://jsbin.com/UKewOvu/2/edit?html,js,console,output 有一个关于该问题的工作示例

代码如下:

ko.bindingHandlers.pinTest = {
  init: function (element, valueAccessor, allBindingsAccessor) {

    ko.utils.registerEventHandler(element, "keyup", function () {
      var value = valueAccessor();
      value(element.value);
    });
  },
  update: function (element, valueAccessor, allBindings, viewModel, bindingContext) {
    var value = ko.unwrap(bindingContext.$data.propertyOne);
    console.log("in binding update -value="+value);
  }
};

var myVm = function () {

  this.propertyOne = ko.observable();
  this.propertyTwo = ko.observable();  
  this.propertyThree = ko.observable();
};

function start() {
  ko.applyBindings(new myVm());
}

【问题讨论】:

    标签: knockout.js ko-custom-binding


    【解决方案1】:

    var value = ko.unwrap(bindingContext.$data.propertyOne) 将为所有 3 个属性创建对 propertyOne 的依赖

    改为

    console.log("in binding update -value="+ ko.unwrap(valueAccessor()));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-06
      • 1970-01-01
      相关资源
      最近更新 更多