2013-02-17 32 views
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回調等。我對嗎?

如果是,我該如何防止這種遞歸?
如果不是,爲什麼?

+0

你試試你的綁定? 'update'會被調用,但只要用'.val'設置一個元素的值不會觸發'.change'事件。你想用這個完成什麼? – 2013-02-17 16:37:51

+0

@AndrewWhitaker,你確定?如果你確定的話,寫作答案。不,我沒有試過:) – shift66 2013-02-17 16:50:45

+0

[看看這個例子](http://jsfiddle.net/CCNtR/13/)。沒有無限的遞歸發生。 – 2013-02-17 17:16:33

回答

3

你的代碼不應該導致遞歸情況; .val方法不會觸發.change事件。

退房使用您的代碼在這裏一個例子:http://jsfiddle.net/CCNtR/13/

相關問題