この場合、共通の親コンポーネントを使用して、product-list
をリストを受信して表示するダムコンポーネントにする方が良いと思います。親がこのリストを管理するように、product-list
はリストのレンダリングを担当します。これにより、親コンポーネントからステートを処理することができます。new-product
もダムであるため、親に変更が加えられ、新しいリストステートが子(a.k.a. product-list
)に伝播されます。
例えば、このコンポーネントの生の木に似た何かを使用することを検討してください:前の例には、生のコンポーネントツリーの表現とそのテンプレートです
<products-page store="$ctrl.store">
<h1>{{ $ctrl.store.title }}</h1>
<product-list products="$ctrl.store.products"></product-list>
<product-form on-save="$ctrl.productAdded(product)"></product-form>
</products-page>
:
<product-manager store-id="$ctrl.storeId">
<h1>{{vm.store.title}}</h1>
<product-list products="vm.store.products"></product-list>
<new-product on-added="vm.productAdded(product)"></new-product>
</product-manager>
または多分は実際の状況では、<products-page store="$ctrl.store"></products-page>
があるでしょう。なぜなら内部ノードはコンポーネント定義のテンプレートによって定義されるからです。
私は、これら2つの親コンポーネントには、呼び出す関数が含まれている必要があると思います。この機能は何をすべきか? –
product-listコンポーネントは、store-id入力を取得してストアのプロダクトのリストを取得します。親コンポーネントに関数を追加すると呼び出されましたが、新製品コンポーネントから製品を追加するときにリストをリロードするのは誰ですか? –
私はproduct-listが親コンポーネントから製品のリストを取得し、親コンポーネントはこのリストに新しい製品を追加するべきだと思います。それからあなたの問題は消えます。 –