我有一个自定义绑定,触发页面上使用相同绑定的每个元素,即。当我在第一个字段中输入文本时,此代码将触发绑定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());
}
答案 0 :(得分:1)
var value = ko.unwrap(bindingContext.$data.propertyOne)
将为所有3个属性的属性One创建依赖关系
取而代之的是
console.log("in binding update -value="+ ko.unwrap(valueAccessor()));