我正在使用淘汰组件来构建具有不同部分视图的搜索视图,这些部分视图具有自己的视图模型:
- 搜索字段
- 筛选
因此,搜索字段视图模型看起来像这样:
define(["knockout", "text!./search-field.html"], function (ko, templateMarkup) {
function SearchFieldVM(params) {
this.query = ko.observable("");
}
return { viewModel: SearchFieldVM, template: templateMarkup };
}
过滤器视图模型看起来像:
define(["knockout", "text!./filter.html"], function (ko, templateMarkup) {
function FilterVM(params) {
this.categories = ko.observableArray();
this.currentCategory = ko.observable();
}
return { viewModel: FilterVM, templateMarkup };
}
然后我有一个搜索虚拟机:
define(["knockout", "text!./search.html"], function(ko, templateMarkup) {
function SearchVM(params) {
this.currentQuery = ko.observable();
this.currentCategory = ko.observable();
}
return { viewModel: SearchVM, template: templateMarkup };
}
好的,事情就是这样。每当更改 SearchFieldVM 中的可观察查询时,我希望更改 SearchVM 中可观察的 currentQuery。
currentCategory 也是如此。
假设我的搜索视图如下所示:
<search-field></search-field>
<filter></filter>
然后,我如何监听搜索字段组件的查询可观察对象并过滤组件的 currentCategory 可观察对象,以便 SearchVM 注意到这些更改?