2017-03-23 11 views
2

これは簡単な方法ですが、わかりません。私のHTMLファイルにVueJS 2.0親から子への連絡

私は、次のボタンがあります。そのボタンをクリックする

<button @click="showModal">Show Modal</button> 

は、以下の方法を実行します:

new Vue({ 
    el: '#root', 
    methods: { 
     showModal() { Event.$emit('showModal'); }, 
    } 
}); 

私はそのボタンをクリックしたときに発生します何切り替えることですモーダルコンポーネントのクラスコンポーネントの関連コードは次のとおりです。

Vue.component('modal', { 

    template: ` 
     <div :class="[ modalClass, {'is-active' : isActive }]"> 
      ETC... 
     </div> 
     ` 

    data() { 
     return { 
      isActive: false, 
      modalClass: 'modal' 
     } 
    } 

VueJSの新機能で、Vueでの通信方法を理解しようとしています。私は次のステップを理解していないようです。ボタンをクリックしたときにisActiveがtrueに設定されるようにするにはどうすればよいですか?

ご協力いただきありがとうございます。

すべてのベスト、

モシェ

あなたmain.jsで

答えて

2

(または、これまであなたがVueのアプリをインスタンス化)

あなたはeventbus

Vue.prototype.bus = new Vue(); 
として平野VUEのインスタンスを使用することができます

このようにして使用することができます。

私のvueプロジェクトのgithubを例に挙げてみてください。私はイベントバスをたくさん紹介しています。親から子へと通信するには

https://codepen.io/wilomgfx/pen/OpEVpz?editors=1010

+1

これは有望に見えるが、私は "mは、まだトラブル、それを実装する方法を考え出すを持つ私は、モーダル・コンポーネントに追加します。そのボタンをクリックすると、isActiveはtrueに設定され、モーダルが表示されますか?私はコードを使用してCodePenを設定します。http://codepen.io/anon/pen/VpdYgL?editors=0010 – Moshe

+1

PS Laracastsの参考にしてくれてありがとうございます - 私は実際にそのシリーズを今に通り抜けており、それがgreで。 – Moshe

+1

心配しないで - 私はそれを理解し、それは動作します!ありがとう:) – Moshe

1

:オペアンプの質問を使用して https://laracasts.com/series/learn-vue-2-step-by-step

本格例: https://github.com/wilomgfx/vue-weather

またVueJS 2に、この無料の素晴らしいシリーズ、その本当に素晴らしいをチェックアウトcomponents propsを使用できます。

あなたがより深いコミュニケーション(親は少し小さな子供と通信する)を持っているなら、@WilomGfxによってbusEventが言及されます。子供に親からの通信のための

コード:

Vue.component('modal', { 
 
    template: '<div :class="[ modalClass, {\'is-active\' : isActive }]">' + 
 
      'Hello Word !' + 
 
     '</div>', 
 
    data() { 
 
     return { 
 
      modalClass: 'modal' 
 
     } 
 
    }, 
 
    props: { 
 
    \t isActive: { type: Boolean, default: false } 
 
    } 
 
}); 
 

 
new Vue({ 
 
    el: '#root', 
 
    data() { 
 
     return { 
 
     isActive: false, 
 
     } 
 
    }, 
 
    methods: { 
 
    showModal() {this.isActive = true }, 
 
    } 
 
});
.is-active { 
 
    color: red; 
 
}
<script src="https://vuejs.org/js/vue.min.js"></script> 
 

 
<div id="root"> 
 
    <modal :is-active="isActive"></modal> 
 
    <button @click="showModal">Show Modal (going red when prop isActive is true)</button> 
 
</div>

+0

ありがとう。それは間違いなく役に立ちますが、私が望むものは100%ではありません。モーダルタグにカスタムプロパティを追加することなく通信する方法があるかどうかを知りたいと思います。言い換えれば、私はこの ' CONTENT'が好きです。これはありません: ' CONTENT – Moshe

+0

@Mosheそれはあなたが悪いコードを書く原因になる無意味な目標です。小道具は、コンポーネントが外部状態を受け取る正しい方法です。 –

+0

イベントバスがあなたに合っていればOKです。 私はこのケースについて考えていたので、あなたに小道具を示しました: あなたのアプリに3つのモーダルコンポーネントがあるとしましょう:使用するとすべてのモーダルが変わるため、emitを使用できません。 – SLYcee

関連する問題