2017-07-07 13 views
1

私はフォームを持っており、各フィールドをforeachして、フィールドを自分のコンポーネントに渡します。フィールドコンポーネントからトリガーされたすべての兄弟フィールドに伝播するイベントをトリガーしたいと思います。兄弟のイベントをトリガする

フィールドコンポーネントからこれを行うことができます。 this.dispatch( 'activeField'、this.field);

フォームコンポーネントを構成します。 this.broadcast( 'activeField'、this.field);

親が関わるオーバーヘッドなしにこれを行う方法があるようです。私はVue 1.0を使っています。この例は、私が走っている問題を実証するためのものです。 これはsudoのコードなので、タイプミスの可能性は非常に高いです。

+1

親を含みます。兄弟はお互いを知るべきではありません。 –

答えて

3

「本格的な」方法論は、Vuexまたは別の共有状態フラックスプロバイダを使用することです。しかし、それは絶対に必要なわけではありません。

スタンドアロンのVueインスタンスをイベントバスとして利用して、フィールドコンポーネントからメッセージを発行し、フォームコンポーネントで受信することもできます。

eventBusWrapper.js

import Vue from 'vue' 

const EventBus = new Vue() 
export default { 
    EventBus 
} 

磁場成分

import EventBus from './eventBusWrapper' 
EventBus.$emit('activeField', this.field) 

フォーム部品

import EventBus from './eventBusWrapper' 
EventBus.$on('activeField', (field) => { 
    console.log(field) 
}); 
+0

これは賢いですが、私のリードは牛を持つでしょう。先端に感謝します。 –

+0

@ShawnPivonka助けてくれることを嬉しく思っていますが、私は本当にあなたのリードの反対を理解していません。彼らの懸念は何ですか? –

+0

他のコードベースとの一貫した動作ではありません。 –

関連する問題