我遇到的是与VM嵌套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>