こんにちは私はVue.jsにrelativly新しいですとSOFAR私はそれで働くのが好きしかし、今日、私は苦労していると私は私の問題のためにきれいな解決策を見つけていません。
私はv-forループで作成した9個のChild.vueコンポーネントを持っています。すべてのChild.vueにはContextMenu.vueコンポーネントが含まれています。 Child.vueのボタンをクリックすると、このコンテキストメニューが表示されます。すべてがうまく動作します。
ここでは、すべての時点で1つのコンテキストメニューしか表示しないようにします。だから、私は "menuIsShown"のようなParent.vueにイベントを送出し、すべてのChild.vueに親のイベントを送出してメニューを隠すことを考えていました。 1つのメニューで、私はそれを単に目に見えるように設定することができました。
this.$emit('contextMenuShown', true);
this.showMenu();
しかし、私が知ったように、Vue2にはもう$ディスパッチはありません。だから、私はこれを使って、すべてのChild.vueでメソッドをトリガーするParent.vueの$子を試しました。どういうわけかこれもうまくいきませんでしたし、子供たちに連絡するために小道具を使うべきであるので、この問題のためのよりよい解決策がなければならないと思います。しかし、これはforループではかなり難しいようです。グローバルイベントバスを使用することも可能ですが、それは本当に必要ですか?
この問題を解決するためのベストプラクティスのアドバイスはありますか?データは小道具を経由して、親から子に渡すことができますので、事前 ロビ
他の子コンポーネントのクリックイベントが発生したときに他の子コンポーネントを非表示にしますか? –
すべての子供のコンテキストメニューのみ、各時点で1つのコンテキストメニューしか表示されないようにする –