2011-12-06 24 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

谢谢,这正是我一直在寻找的。 –