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