我正在使用由3个列表和1个脉冲控制组成的页面。使用Knockout simplegrid插件进行列表控制,并且仅使用挖空进行脉冲控制。两个控件都使用不同的ViewModel。 问题是当我将脉冲控制置于列表控制之上时,脉冲控制工作正常。但是当我把它放在列表控件下面时,每个元素上的数据绑定都会失败,即数据绑定输入,按钮不起作用。 我检查了控制台,但我发现没有错误。我也使用chrome knockout扩展它也没有显示任何错误。 请提供可能产生问题的可能方案。
答案 0 :(得分:2)
可能是因为在应用绑定时你会覆盖。你可以通过告诉Knockout它应该应用绑定的根元素来解决这个问题,这样你的视图模型就不会相互干扰。
ko.applyBindings(viewModelA, document.getElementById("controlone"));
ko.applyBindings(viewModelB, document.getElementById("controltwo"));
来自淘汰赛文档:http://knockoutjs.com/documentation/observables.html
或者,您可以传递第二个参数来定义要搜索数据绑定属性的文档的哪个部分。例如,ko.applyBindings(myViewModel,document.getElementById('someElementId'))。这会将激活限制为具有ID someElementId及其后代的元素,如果您希望拥有多个视图模型并将每个视图模型与页面的不同区域相关联,这将非常有用。