Knockout.js KnockoutJS:对多个div应用相同的ViewModel

Knockout.js KnockoutJS:对多个div应用相同的ViewModel,knockout.js,Knockout.js,我有一个可以反复复制的div。我想使用KO将一个新的ViewModel实例绑定到每个新的div实例。仅仅通过阅读教程和示例,我无法理解这是怎么可能的 考虑这一点: <div id="div1"> <input data-bind="value: firstName" /> </div> <div id="div2"> <input data-bind="value: firstName" /> </div>

我有一个可以反复复制的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>

函数ViewModel(){
this.firstName=ko.可观察(“测试”);
}
应用绑定(新的ViewModel());

这将两个div上的输入字段绑定到同一个ViewModel对象。换言之,我要做的是将ViewModel的一个新实例绑定到每个div。

它清楚地写在

或者,您可以传递第二个参数来定义所需文档的哪一部分 搜索数据绑定属性。例如,ko.applyBindings(myViewModel, document.getElementById('someElementId'))。这将限制对元素的激活 使用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>

函数ViewModel(){
this.firstName=ko.可观察(“测试”);
}
var vm1=新的ViewModel();
var vm2=新的ViewModel();
应用绑定(vm1,document.getElementById('div1');
应用绑定(vm2,document.getElementById('div2');
vm2.名字(“ARCHE”);

我浏览了几页文档,希望找到一个“applyBinding”部分,但没有。你所指出的那一段是在一个不同的主题中一起讨论的。不管怎样,你的代码似乎可以做到这一点。谢谢对不起,如果我听起来很讨厌,但是这段话是在“激活淘汰”的主题中,在我看来,这是一个再好不过的主题了。KO一直在为我工作,所以我认为我已经完成了“激活”部分。但我明白你的意思。总的来说,KO看起来相当完整,尽管完成得很好。我真的很高兴看到有第二个参数!相关的: