0

同じバインディングを使用するページ上の各要素に対して起動するカスタム バインディングがあります。このコードは、最初のフィールドにテキストを入力すると、バインディングを 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());
}
4

1 に答える 1

1

var value = ko.unwrap(bindingContext.$data.propertyOne)3 つのプロパティすべてについて、propertyOne への依存関係を作成します。

代わりに

console.log("in binding update -value="+ ko.unwrap(valueAccessor()));
于 2013-11-21T14:08:04.253 に答える