Vue.js Eltern Kind Kommunikation über Props und Events
Hallo Ich bin relativly neu Vue.js und sofar Ich genieße die Arbeit mit ihm, aber heute bin ich zu kämpfen und ich habe nicht eine saubere Lösung für mein Problem gefunden .
Ich habe 9 Child.vue-Komponenten, die ich in einer v-for-Schleife erstellen, jede Child.vue enthält eine ContextMenu.vue-Komponente. Wenn ich auf eine Schaltfläche in Child.vue klicke, trigge ich dieses Kontextmenü auf. Alles funktioniert gut so.
Jetzt möchte ich nur ein Kontextmenü zu jedem Zeitpunkt angezeigt werden. Also dachte ich, ich emittiere ein Event an die Parent.vue etwas wie "menuIsShow" und verschicke in der Eltern ein Ereignis zu jedem Child.vue, um das Menü auszublenden. In dem einen Menü konnte ich es einfach auf sichtbar setzen.
this.$emit('contextMenuShown', true);
this.showMenu();
Aber wie ich gelernt habe gibt es keinen $ Versand in Vue2 mehr. Also habe ich versucht, diese. $ Children in der Parent.vue zu verwenden, um eine Methode in jedem Child.vue auszulösen. Irgendwie funktionierte das auch nicht und ich denke, es muss eine bessere Lösung für dieses Problem geben, da Sie Requisiten benutzen sollten, um mit den Kindern zu kommunizieren. Aber das scheint mir in einer for-Schleife ziemlich hart zu sein. Es wäre auch möglich, einen globalen Event-Bus zu verwenden, aber ist das wirklich notwendig?
Best-Practice-Ratschläge zur Lösung dieses Problems?
Vielen Dank im Voraus robi
Sie möchten, dass die anderen untergeordneten Komponenten ausgeblendet werden, wenn das Klickereignis eines anderen untergeordneten Elements ausgelöst wird? –
nur das Kontextmenü in jedem Kind, um sicherzustellen, dass zu jedem Zeitpunkt nur ein Kontextmenü angezeigt wird –