Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我可以使用Knockout将绑定应用于多个DOM元素吗?_Javascript_Html_Knockout.js - Fatal编程技术网

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

Javascript 我可以使用Knockout将绑定应用于多个DOM元素吗?,javascript,html,knockout.js,Javascript,Html,Knockout.js,我有一个这样的结构: <div id='col1'> ... some ko elements ... </div> <div id='col2'></div> <div id='col3'> ... some more ko elements ... </div> 这可以很好地填充第一列。但我仍然缺少第三栏。我希望能够做到这一点: <div id='col1' class='bindable'> ... so

我有一个这样的结构:

<div id='col1'> ... some ko elements ... </div>
<div id='col2'></div>
<div id='col3'> ... some more ko elements ... </div>
这可以很好地填充第一列。但我仍然缺少第三栏。我希望能够做到这一点:

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

。。。因此它尝试绑定到
.bindable
的所有实例。“淘汰赛”中有类似的内容吗?或者你有什么建议吗?

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

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

这对我很有用,而且很干净

从另一个角度来看,您只有一个视图模型。那么,为什么不用一个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>

... 一些ko元素。。。
... 更多的ko元素。。。

唯一的问题是,视图模型中的任何代码都将为每个具有bindable class.Hm的元素调用。。对我来说不起作用,但这确实
$(“.bindable”).each(function(){ko.applyBindings(model1,$(this.get(0))})
使用ko 2.3,我现在得到错误“不能对同一元素多次应用绑定”jQuery的
$。每个
都将其回调的
this
设置为
HTMLElement
而不是jQuery包装器对象。因此,行应该是
ko.applyBindings(vm,this)@joelhoro您正在不必要地使用
$(这个)包装然后展开元素。get(0)
是的,这实际上就是我这些天在做的事情,特别是在切换到DurandalJS之后。如果您在col2中绑定了来自其他视图模型的数据,会不会产生问题?
<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 id='myWrapper'>
    <div id='col1'> ... some ko elements ... </div>
    <div id='col2'></div>
    <div id='col3'> ... some more ko elements ... </div>
</div>