KnockoutJS 2.3:'自定义绑定'+'ko.applyBindings到局部视图'抛出错误

时间:2013-09-18 22:46:14

标签: knockout.js

我有一些代码使用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

1 个答案:

答案 0 :(得分:2)

当然!! 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]);*/