2011-12-06 25 views
0

我有以下代碼:applyBindingsToNode與觀察到的

ko.bindingHandlers.disablingOption = { 
    init: function(element, valueAccessor) { 
     alert(valueAccessor()); 
    }, 
    update: function(element, valueAccessor) { 
     alert(valueAccessor()); 
    } 
}; 

// Some other code 
var option = $(element); 
var tempObserver = ko.observable(true); 
ko.applyBindingsToNode(option, { 
    disablingOption : tempObserver 
}); 
tempObserver(false); 
// 

我的目的是看到三個警告框,前兩個說:「真正的」 和第三說「假的」,但是我從來沒有得到過第三框。 任何想法?

回答

3

調用valueAccessor()只會給你tempObserver回來。爲了創建依賴關係,您實際上需要訪問tempObserver的值。

一種安全的方式來做到這一點是通過調用ko.utils.unwrapObservable它想:

alert(ko.utils.unwrapObservable(valueAccessor())); 

ko.utils.unwrapObservable會妥善處理返回可觀察或不可觀察的價值。

http://jsfiddle.net/rniemeyer/C7Gt5/

+0

謝謝,這正是我一直在尋找的。 –