我有一些代码使用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()之后初始化自定义绑定。我不知道以后是否有办法添加自定义处理程序,这可能会有所帮助。 我希望这很清楚。
答案 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]);*/