【问题标题】:Knockout.js - in a binding access observable, not just it's valueKnockout.js - 在一个绑定访问 observable 中,不仅仅是它的值
【发布时间】:2013-03-11 18:27:25
【问题描述】:

我有以下自定义绑定

ko.bindingHandlers.dialogFor = {
    init: function(el, valueAccessor) {
        $(el).dialog();
        var val = valueAccessor();
        if(ko.isObservable(val))
            $(el).on('dialogclose', function(){ 
                val(null) 
            }); 
    }
};

这使我可以使用dialogFor 绑定标记一个html 片段,并只需设置可观察对象即可打开对话框。

不幸的是,传入的值总是被解包,因此 if 检查永远不会通过,并且在对话框关闭时重置 observable 不起作用。

如何获取传递的实际 observable,而不仅仅是解包的值?

【问题讨论】:

    标签: binding knockout.js


    【解决方案1】:

    我看不到您的 HTML,所以这是一个猜测,我认为您在自定义绑定的值中使用了 observable,例如:

       <div data-bind="dialogFor: val()"></div>
    

    如果是,则您已经解开该值,并且只有不是可观察值的值传递给您的自定义绑定,所以这就是您的 if 条件失败的原因。您应该像这样使用它:

       <div data-bind="dialogFor: val"></div>
    

    我创建了一个working example,其中 jquery ui 对话框状态由 observable 控制。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-04-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-10
      • 2015-04-01
      • 2020-02-25
      相关资源
      最近更新 更多