假设您有一个包含以下视图模型的产品概览页面:
- 产品索引视图模型;绑定到整个页面的根视图模型
- 产品列表视图模型;用于显示所有产品的小部件
- 产品注册视图模型;用于注册新产品的小部件
小部件是通过使用自定义 HTML 元素(例如<product-list></product-list>
和<product-registration></product-registration>
)加载的。这很棒,因为我不必将这些小部件的任何知识放在我的根模型中。但是,我还想在用户注册新产品后刷新产品列表。简而言之:
如何从 ProductRegistrationViewModel 向 ProductListViewModel 发送信号?
我已经查看了Knockout Postbox,但这似乎并不能解决问题。如果我有多个产品列表并且我只想刷新其中一个怎么办?理想情况下,我想在组件的视图模型上实现一系列公共方法。然后从我的页面的根视图模型将两者联系在一起,如下所示:
var ProductIndexViewModel = function()
{
var productRegistrationComponent = ??;
var productListComponent = ??;
productRegistrationComponent.onRegistrationComplete(function() {
productListComponent.refresh();
};
}
但是,我无法从这里访问这些视图模型。还是我?
如何从我的根视图模型访问子视图模型?
最后,如果有人看到我的问题的更好解决方案:我全神贯注!