Knockout.js如何知道将视图元素绑定到哪个模型?

时间:2014-02-28 22:03:06

标签: javascript mvvm knockout.js

考虑来自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,我确信这是非常基础的。但是我已经完成了前四个教程的工作,并做了一些侧面阅读,而我所看到的并没有解决这个基本问题。

1 个答案:

答案 0 :(得分:3)

ko.applyBindings(new AppViewModel());

将绑定应用于整个文档。 Knockout不希望您将多个视图模型绑定到同一个HTML。这就是为什么选择在HTML文档的一部分上应用绑定。

ko.applyBindings(new AppViewModel(), document.getElementById('test'));