私はthis質問/回答を読んで、そして親が特定のコンポーネントが含まれているときには機能しながら、私のシナリオでは、親がこの含まれていますヴュー2と子コンポーネントイベント
<component :is="currentView"></component>
とcurrentView
の値は、特定の時刻にどのコンポーネントが「ロード」されているかを決定します。したがって、コンポーネントタグのv-on:event="handler"
を使用すると、ここではを意味します。子コンポーネントは同じイベント名を使用する必要があります:(親コンポーネントのcreated()
機能では、現在どのコンポーネントが ' 「ログイン」イベントを送信するログインコンポーネントと、「更新」イベントを送信するデータビューコンポーネントがあります。親では、次のようなものが必要ですこの:
this.$on('login', doLogin)
this.$on('update', doUpdate)
は、しかし、それはその子供ではない、自体からのイベントに耳を傾けています、私はまた、コンポーネントに参照を与えてみました:。
<component ref="main" :is="currentView"></component>
とthis.$refs.main.$on('login', doLogin)
を使用しますが、初期には、レンダリングまでががmounted()
方法(早すぎる)に行くことができない、とupdated()
方法でそれが繰り返し呼び出されるように$refs
オブジェクトは、作成されていませんこれは、私は確信して良いアイデアではありません...
はい、それは私が「すべての子コンポーネントは同じイベント名を使用する必要があります」という質問の意味です。私は正直言って、ハンドラのアプローチが嫌いです。保守がもっと複雑です。しかし、あなたがすべての子コンポーネントをコントロールしているとき、私がより良い選択肢だと思うものについて、私の答えを見てください。 – dsl101