【问题标题】:KnockoutJS 2.3: 'custom binding' + 'ko.applyBindings to partial view' throws errorKnockoutJS 2.3:“自定义绑定”+“ko.applyBindings 到局部视图”抛出错误
【发布时间】:2013-09-23 21:09:03
【问题描述】:

我有一些使用 knockout.js、自定义绑定和调用 applyBindings() 到局部视图的代码。 jsfiddle with ko 2.2.1

    var handle = slider.slider().find(".ui-slider-handle").first();
    $(handle).attr("data-bind", "tooltip: viewModel.value");
    ko.applyBindings(viewModel.value, $(handle)[0]);

现在,在 ko 版本 2.3 中,我收到错误消息“您不能将绑定多次应用于同一元素。” jsfiddle with ko 2.3

我可能一直有这个问题,但以前版本的淘汰赛不会抛出异常。 我在部分 applyBindings 之前添加了对 cleanNode() 的调用,但 that doesn't help

    var handle = slider.slider().find(".ui-slider-handle").first();
    $(handle).attr("data-bind", "tooltip: viewModel.value");
    ko.cleanNode($(handle)[0]);
    ko.applyBindings(viewModel.value, $(handle)[0]);

有趣的是,绑定适用于动态工具提示,但不适用于静态字段,因此我认为应用部分视图绑定后会引发错误。 我试图遵循全局 ko.applyBindings() 之后发生的调用链,但它嵌套得很深,并且迷路了。 我所知道的是,自定义绑定在 ko.applyBindings() 之后被初始化。我不知道以后是否有办法添加自定义处理程序,也许这会有所帮助。 我希望这已经足够清楚了。

Linked question.

【问题讨论】:

    标签: knockout.js


    【解决方案1】:

    当然!! I don't even need to call applyBindings() to the partial view,添加正确的属性就够了:

    var handle = slider.slider().find(".ui-slider-handle").first();
    $(handle).attr("data-bind", "tooltip: viewModel.value");
    /*ko.applyBindings(viewModel.value, $(handle)[0]);*/
    

    【讨论】:

    • 很高兴你知道了!
    猜你喜欢
    • 2011-11-12
    • 2013-01-06
    • 2013-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-02
    • 2015-07-27
    相关资源
    最近更新 更多