【问题标题】:Knockout applyBindingsToNode issue for composite observables condition组合可观察条件的淘汰 applyBindingsToNode 问题
【发布时间】:2015-08-02 22:19:38
【问题描述】:

我正在使用淘汰赛,并且我正在使用 ko.applyBindingstoNode 以编程方式将运行时绑定应用到某个节点。

第一个简单的案例有效:

ko.applyBindingsToNode(myElement, {visible: observable1}, myModel );

但是,如果我的可见性依赖于更多的可观察性,并且我使用普通表示法,就好像我通过 html data-bind 属性绑定一样,它就不起作用:

ko.applyBindingsToNode(myElement, {visible: observable1() && observable2()}, myModel );

我需要定义一个 ko.computed 并在编程绑定中使用它,但我真的不想创建这些计算,因为我担心旧浏览器的性能,比如 IE6

applyBindingsToNode 怎么做涉及复杂表达式的绑定?

【问题讨论】:

    标签: javascript knockout.js binding


    【解决方案1】:

    所以你想要一个计算值而不使用计算值?这是不可能的,你需要使用 ko.computed:

    var myComputed = ko.computed(function(){
        return observable1() && observable2();
    });
    
    ko.applyBindingsToNode(myElement, {visible: myComputed}, myModel);
    

    如果您要在 HTML 中执行此操作,无论如何它都会在后台创建一个计算。

    淘汰赛表现相当不错。如果你真的很担心,你应该做一个基准测试并检查它是否真的很重要

    【讨论】:

    • 那么,绑定的参数,显式或隐式,始终是可观察的(可能是计算的)?这在直接使用函数 applyBindingsToNode 时变得很明显,我说的对吗?
    • 它不一定是计算的,你也可以绑定一个常规值,但是当值改变时它不会被更新。只是当您使用表达式在 HTML 中应用绑定时,我想敲除将其包装在计算中。没有其他方法可以工作。
    • 从myElement,myModel来了
    猜你喜欢
    • 2017-10-20
    • 2012-09-08
    • 2015-10-05
    • 2013-06-02
    • 2018-08-02
    • 2013-05-30
    • 2014-06-23
    • 2021-09-19
    相关资源
    最近更新 更多