1

我有一些使用 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 与 ko 2.3

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

    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() 之后被初始化。我不知道以后是否有办法添加自定义处理程序,也许这会有所帮助。我希望这已经足够清楚了。

链接问题

4

1 回答 1

2

当然!!我什至不需要调用 applyBindings() 到局部视图,添加正确的属性就足够了:

var handle = slider.slider().find(".ui-slider-handle").first();
$(handle).attr("data-bind", "tooltip: viewModel.value");
/*ko.applyBindings(viewModel.value, $(handle)[0]);*/
于 2013-09-18T23:20:09.447 回答