我有以下代码:

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);
//

我的意图是看到三个警报框,前两个说“true”
第三个说“false”,但是我没有得到第三个方框。
有任何想法吗?

最佳答案

调用valueAccessor()仅会返回tempObserver。为了创建依赖关系,您实际上需要访问tempObserver的值。

一种安全的方法是调用ko.utils.unwrapObservable,例如:

alert(ko.utils.unwrapObservable(valueAccessor()));
ko.utils.unwrapObservable将正确处理返回可观察值或不可观察值的值。

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

关于javascript - 与可观察的applyBindingsToNode,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8408017/

10-15 03:22