javascript - applyBindingsToNode 与 observable

标签 javascript jquery mvvm knockout.js

我有以下代码:

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” 第三个说“假”,但我从未收到第三个盒子。 有任何想法吗?

最佳答案

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

执行此操作的安全方法是调用 ko.utils.unwrapObservable ,如下所示:

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

ko.utils.unwrapObservable 将正确处理可观察或不可观察的返回值。

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

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

相关文章:

c# - 与从 XAML 创建的 View 模型相关的问题

JavaScript:使用无效索引初始化对象数组

javascript - 有没有 javascript ssh 客户端?

php - 最佳实践ajax随机加载更多图像(内容)

wpf - 实现诸如MVC或MVVM的架构模式是否为时已晚?

c# - 如何删除errorList中已经存在的单词

javascript - jQuery 滚动顶部火狐浏览器不工作

javascript - Angular 6 中的 CanDeactivate 无法正常工作

javascript - 为什么 jQuery 验证不起作用?

jquery - 是否可以找到触发 .change() 的值?