0
我需要进行自定义绑定,如value
绑定。这里是我的代码:如何防止在knockout.js自定义绑定中更新和值更改回调的递归调用?
ko.bindingHandlers.myValue= {
init: function(element, valueAccessor) {
$(element).change(function() {
var value = valueAccessor();
value($(this).val());
});
},
update: function(element, valueAccessor) {
var value = valueAccessor();
$(element).val(ko.utils.unwrapObservable(value))
}
};
现在,如果我改变观察到的价值,update
将被调用,该元素的值将被改变,所以在init
描述的change
回调将被执行。
它将更改value
,因此将调用update
回调等。我对吗?
如果是,我该如何防止这种递归?
如果不是,为什么?
你试试你的绑定? 'update'会被调用,但只要用'.val'设置一个元素的值不会触发'.change'事件。你想用这个完成什么? – 2013-02-17 16:37:51
@AndrewWhitaker,你确定?如果你确定的话,写作答案。不,我没有试过:) – shift66 2013-02-17 16:50:45
[看看这个例子](http://jsfiddle.net/CCNtR/13/)。没有无限的递归发生。 – 2013-02-17 17:16:33