我遇到嵌套 div 不会与虚拟机绑定的情况。有什么想法吗?我正在尝试以下操作,但它打破了任何想法?
<div id="div1">
<div id="div2">
</div>
</div>
如果我尝试这样做,效果很好:
<div id="div1">
</div>
<div id="div2">
</div>
JavaScript:
ko.applyBindings(vm1, document.getElementById('div1'));
ko.applyBindings(vm2, document.getElementById('div2'));
有任何想法吗?
当你绑定时div1
它将绑定一切,包括其中的内容div2
。当你绑定时div2
它将再次绑定元素。这不是一个好情况,因为元素将附加多个事件处理程序。否则,applyBindings 之一可能会出错,因为元素不希望绑定到不同的视图模型。
这里的文章列出了一种保护内部元素不被外部调用绑定的方法:http://www.knockmeout.net/2012/05/quick-tip-skip-binding.html
另一种选择是使用单一视图模型,例如:
var viewModel = {
vm1: vm1,
vm2: vm2
};
ko.applyBindings(viewModel);
然后,像这样绑定:
<div id="div1" data-bind="with: vm1">
<div id="div2" data-bind="with: $root.vm2">
</div>
</div>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)