我有这样的结构:
<div id='col1'> ... some ko elements ... </div>
<div id='col2'></div>
<div id='col3'> ... some more ko elements ... </div>
......我需要能够ko.applyBindings
到col1
和col3
。现在,我正在做这样的事情来绑定col1
:
ko.applyBindings(myViewModel, document.getElementById("col1"));
可以正常填充第一列。但我仍缺乏第三栏。我很乐意能够做到这一点:
<div id='col1' class='bindable'> ... some ko elements ... </div>
<div id='col2'></div>
<div id='col3' class='bindable'> ... some more ko elements ... </div>
然后......
ko.applyBindings(myViewModel, $(".bindable"));
...以便它尝试绑定到.bindable
的所有实例。在淘汰赛中有没有这样的东西,或者你有什么建议吗?
答案 0 :(得分:18)
这是我找到的最佳解决方案:
<div id='col1' class='bindable'> ... some ko elements ... </div>
<div id='col2'></div>
<div id='col3' class='bindable'> ... some more ko elements ... </div>
然后是绑定的脚本......
$(".bindable").each(function(){
ko.applyBindings(myViewModel, this[0]);
}
这适合我,而且很干净。
答案 1 :(得分:1)
从另一个角度来看,你只有1个视图模型。那么为什么不用div包装整个div(col1,col2等)并将你的viewmodel绑定到它?
<div id='myWrapper'>
<div id='col1'> ... some ko elements ... </div>
<div id='col2'></div>
<div id='col3'> ... some more ko elements ... </div>
</div>