如何在Knockout中选择父视图模型
How to select parent view model in Knockout?
我在我的页面中使用两个视图模型,mainViewModel
和filterViewModel
,其中filterViewModel
由mainViewModel
实例化
function mainViewModel() {
this.data = ko.observableArray();
this.filter = new filterViewModel();
}
function filterViewModel() {
this.filter = function() {
// ajax blablabla
}
}
我如何能访问我的mainViewModel
从filterViewModel
设置ajax结果,由filterViewModel
执行,到data
变量在你的父视图模型?
为了简单起见,只显式地将父类传递给子类。
function mainViewModel() {
this.data = ko.observableArray();
this.filter = new filterViewModel(this);
}
function filterViewModel(parent) {
// do whatever with the parent
this.filter = function() {
// ajax blablabla
}
}
正如注释所指出的那样,这引入了一个不必要的依赖。所以最好是传递你想要使用的属性,而不是父模型。
function mainViewModel() {
this.data = ko.observableArray();
this.filter = new filterViewModel(this.data);
}
function filterViewModel(data) {
// do whatever with the data
this.filter = function() {
// ajax blablabla
}
}
或者你可以使用一个很棒的knockout插件knockout-postbox
function mainViewModel() {
this.data = ko.observableArray()
.syncWith('parentData');
this.filter = new filterViewModel();
}
function filterViewModel() {
this.parentData = ko.observableArray()
.syncWith('parentData');
this.filter = function() {
// ajax blablabla
// do whatever with this.parentData
}
}
注意"parentData"可以是任何唯一的字符串,用来标识您选择的模型的属性。
相关文章:
- 如何在视图模型contet更新更新上调用Jquery函数
- 有没有比在app.js上绑定模块名称更好的方法来动态加载视图模型和视图以显示模态
- 在MVVM视图模型中处理应用程序范围的元素
- 将c#视图模型转换为javascript模型时转义HTML标记
- 使用knockout.js将数组绑定到视图模型
- 将js对象更改为使用嵌套的可观察数组敲除js视图模型
- 聚合物:在不同的视图模型中多次使用元素
- 使用AMD时未定义淘汰组件视图模型
- 如何在Knockout.js中选中复选框时更新视图模型及其依赖项
- 无法将对象列表从视图模型设置为 javascript 变量
- 挖空视图模型函数仅影响最后一个实例
- 挖空.js嵌套视图模型不起作用
- 为什么我的视图模型不起作用
- 挖空、视图模型位于其他对象和数据绑定中
- 如何将经度/经度值绑定到挖空视图模型方法
- 挖空.js:等待视图模型实例化完成
- 在Knockout视图模型中调用jQuery插件是一种有效的模式
- KnockoutJS:如何避免在applyBindings上运行视图模型函数
- 使用knockoutjs操作视图模型
- Kendo UI自定义验证不适用于模板和视图模型