考虑来自the very first Knockout tutorial的示例代码:
<p>First name: <strong data-bind="text: firstName">todo</strong></p>
<p>Last name: <strong data-bind="text: lastName">todo</strong></p>
<script>
function AppViewModel() {
this.firstName = "Bert";
this.lastName = "Bertington";
}
ko.applyBindings(new AppViewModel());
</script>
Knockout如何知道HTML中的text: firstName
引用firstName
的{{1}}属性,而不是某些其他AppViewModel属性>模特?是否只是推断这一点,基于以下事实:(a)HTML要求Knockout将其绑定到名为firstName
的属性,而(b)firstName
碰巧有名为AppViewModel
?
我希望我的firstName
属性必须指定与视图关联的模型,因为 well 作为属性,因此Knockout会知道哪个模型可以在。
毕竟,我完全有可能拥有另一个具有相同属性名称的模型:
data-bind
(我实际上尝试了上面的代码,似乎Knockout首先绑定了传递给<script>
function AppViewModel() {
this.firstName = "Bert";
this.lastName = "Bertington";
}
function OtherModel() {
this.firstName = "Chet";
this.lastName = "Chesterson";
}
ko.applyBindings(new AppViewModel());
ko.applyBindings(new OtherModel());
</script>
的模型,并忽略了第二个。)
我只是在学习Knockout,我确信这是非常基础的。但是我已经完成了前四个教程的工作,并做了一些侧面阅读,而我所看到的并没有解决这个基本问题。
答案 0 :(得分:3)
ko.applyBindings(new AppViewModel());
将绑定应用于整个文档。 Knockout不希望您将多个视图模型绑定到同一个HTML。这就是为什么选择在HTML文档的一部分上应用绑定。
ko.applyBindings(new AppViewModel(), document.getElementById('test'));