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

Can I applyBindings to more than one DOM element using Knockout?

本文关键字:DOM 元素 应用 可以使 Knockout 绑定 我可以      更新时间:2023-09-26

我有一个这样的结构:

<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的所有实例。在淘汰赛中有类似的东西吗,或者你有什么建议吗?

这是我找到的最佳解决方案:

<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]);
}

这对我有用,它很好,很干净。

从另一个角度来看,你只有一个视图模型。那么,为什么不把整个div的集合(col1, col2等)与一个div和绑定你的视图模型到它?

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