次のビュー モデルを含む製品概要ページがあるとします。
- ProductIndexViewModel ; ページ全体にバインドされたルート ビュー モデル
- ProductListViewModel ; すべての製品を表示するためのウィジェット
- ProductRegistrationViewModel ; 新商品登録用ウィジェット
ウィジェットは、カスタム HTML 要素 (<product-list></product-list>
および など<product-registration></product-registration>
) を使用してロードされます。これらのウィジェットの知識をルートモデルに入れる必要がないので、これは素晴らしいことです。ただし、ユーザーが新しい製品を登録した後、製品リストも更新したいと思います。要するに:
ProductRegistrationViewModel から ProductListViewModel にシグナルを送信するにはどうすればよいですか?
私はすでにKnockout Postboxを調べましたが、これで問題が解決するようには見えません。複数の製品リストがあり、そのうちの 1 つだけを更新したい場合はどうすればよいですか? 理想的には、コンポーネントのビュー モデルに一連のパブリック メソッドを実装したいと考えています。次に、次のように、ページのルート ビュー モデルから 2 つを結び付けます。
var ProductIndexViewModel = function()
{
var productRegistrationComponent = ??;
var productListComponent = ??;
productRegistrationComponent.onRegistrationComplete(function() {
productListComponent.refresh();
};
}
ただし、ここからこれらのビュー モデルにアクセスすることはできません。それとも私ですか?
ルート ビュー モデルから子ビュー モデルにアクセスするにはどうすればよいですか?
最後に、誰かが私の問題に対するより良い解決策を見つけたら、私はすべて耳にします!