我可以使用Knockout将绑定应用于多个DOM元素吗?

时间:2011-12-29 00:09:21

标签: javascript html knockout.js

我有这样的结构:

<div id='col1'> ... some ko elements ... </div>
<div id='col2'></div>
<div id='col3'> ... some more ko elements ... </div>

......我需要能够ko.applyBindingscol1col3。现在,我正在做这样的事情来绑定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的所有实例。在淘汰赛中有没有这样的东西,或者你有什么建议吗?

2 个答案:

答案 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>