我使用淘汰赛组件构建了不同的局部视图搜索视图拥有自己的视图模型:Knockout如何订阅其他视图模型的属性?
- 搜索字段
- 过滤
所以,搜索领域的视图模型看起来是这样的:
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 };
}
我有那么搜索VM:
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注意到这些变化?
听起来像其中一个人需要知道另一个。确定哪种方式最符合您的需求,然后将一个视图模型传递到另一个视图模型中 –
这是如何在构建组件时实现的? – Ekenstein
我不确定(因此评论而不是答案),组件是淘汰赛的一部分,我还没有探讨任何细节! –