Vue.jsを使用してインタフェースを構築しています。私はフォームを持っています、このフォームはアドレスとその他のビットの雑多なデータを含んでいます。そこで私はVueに2つのコンポーネント、UserData
とUserAddress
を作成しました。 UserData
には、子コンポーネントとしてUserAddress
のインスタンスが含まれています。ページに応じてフォームの「送信」ボタンの動作を特化したいので、これらのコンポーネントには送信ボタンは含まれません。ページを表す外部コンポーネント(サブメニュー:UserPage
)には送信ボタンが含まれていますUserData
テンプレートVue.jsの深くネストされた子コンポーネントからデータにアクセスする方法
階層はUserPage
=>UserData
=>UserAddress
となります。
今、私はUserPage
のいくつかの方法ですべてのフォームデータを取得する必要があります。私はちょうど私が提出するハンドラ内でそれを得るために必要があると言うだろうが、私は直接の子要素のデータにアクセスせずにこれを行うに考えることができる唯一の方法は以下の通りです:
- 使用
$broadcast
が伝播します - がに
e2
の音を聞き、下方からイベントe1
提出ハンドラ - メッセージとアドレスデータをイベント
e2
を送信し、バンドルするUserAddress
- 使用
$dispatch
にe1
イベントをリッスンします、メッセージに他のフォームデータを追加し、イベントを伝播または再ディスパッチします。 e2
をリッスンし、UserPage
をリッスンし、そこに完全な集約データを見つけます。
これは、このような状況を処理する通常の方法ですか?それは過剰なもののようですが、アクセスする子供の$data
は明示的にマニュアルで推奨されていません。
と
親
この
子供のようにチェックthis fiddleだろう後、私は扱うことに気づきましたこれで私はすべてですnsane。あなたがこれをしたいときはいつでも、あなたはVuexを使うべきであるというサインです。また、イベントはVue 2.0ではなくなっているので、それらに頼らないでください。 – amoe
イベントは2でなくなっていません。ブロードキャストとディスパッチの代わりにハブを使用するだけです。 – vbranden
移行ガイドで廃止されていないものとしてマークされています。私はハブパターンを実験しましたが、すぐに制御が外れました。ヴェクスははるかに良いです。 – amoe