我有一个可以一遍又一遍地复制的div。我想使用KO将新的ViewModel实例绑定到每个新的div实例。通过阅读教程并通过示例,我无法理解这是如何实现的。
考虑一下:
<div id="div1">
<input data-bind="value: firstName" />
</div>
<div id="div2">
<input data-bind="value: firstName" />
</div>
<script>
function ViewModel() {
this.firstName = ko.observable("Test");
}
ko.applyBindings(new ViewModel());
</script>
这会将两个div上的输入字段绑定到相同的 ViewModel对象。换句话说,我想要做的是将ViewModel的新实例绑定到每个div。
答案 0 :(得分:1)
清楚地写在documentation
中或者,您可以传递第二个参数来定义所需文档的哪个部分 搜索数据绑定属性。例如, ko.applyBindings(myViewModel, 的document.getElementById(&#39; someElementId&#39;))即可。这限制了对元素的激活 使用ID someElementId及其后代,如果你想拥有多个,这很有用 查看模型并将每个模型与页面的不同区域相关联。
所以,考虑你的例子:
<div id="div1">
<input data-bind="value: firstName" />
</div>
<div id="div2">
<input data-bind="value: firstName" />
</div>
<script>
function ViewModel() {
this.firstName = ko.observable("Test");
}
var vm1 = new ViewModel();
var vm2 = new ViewModel();
ko.applyBindings(vm1, document.getElementById('div1'));
ko.applyBindings(vm2, document.getElementById('div2'));
vm2.firstName("Archie");
</script>