javascript - 使用多个 View 模型时如何指定 View 的数据绑定(bind)上下文

标签 javascript binding mvvm knockout.js

假设我们有几个具有相同属性名称的 ViewModel,例如 IdName,还有 我们已经定义了一个 View 模板(基本上是 HTML)并且想要使用/绑定(bind)来自两个 ViewModel 的数据。

问题是如何指定绑定(bind)数据上下文,以便它是一种指示从哪个 View 模型使用绑定(bind)属性的方法?

最佳答案

http://knockoutjs.com/documentation/observables.html 所述,您可以选择将第二个参数传递给 ko.applyBindings 以定义要搜索数据绑定(bind)属性的文档的哪一部分。例如,ko.applyBindings(myViewModel, document.getElementById('someElementId'))。这将激活限制为 ID 为 someElementId 的元素及其后代,这在您想要拥有多个 View 模型并将每个 View 模型与页面的不同区域相关联时非常有用。

另一种选择是使用在 ko 1.3+ 中引入的 with: 绑定(bind),它根据特定的 viewModel 属性呈现 DOM。这很好,因为如果该属性为 null,则根本不会呈现任何内容。 Steve 在 http://jsfiddle.net/StevenSanderson/f5w6u/3/light/ 上分享了有关此功能的实例

关于javascript - 使用多个 View 模型时如何指定 View 的数据绑定(bind)上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9451901/

相关文章:

javascript - 如何通过单击文本显示文件浏览器并在悬停文本时将鼠标光标更改为指针

c# - WPF:隐藏时将文本绑定(bind)到标题 DataGridColumn 中

c# - 在 Caliburn.Micro 中管理 ViewModel

java - 我如何更新 ListItem (LiveData) 的字段

javascript - 如何通过 ng-model 搜索 html 中的文本?

javascript - AngularJS $timeout 调用函数与匿名函数与表达式

syntax - Unusual Scheme `let`绑定(bind),什么是 `f`?

c++ - 连接到 IP 地址而不是本地主机?

xamarin - Xamarin窗体无法更改Listview SelectedItem上的图像

javascript - 如何防止 textarea 在打字时跳到页面底部? : JQuery/CSS