Zugriff auf eine untergeordnete Methode vom übergeordneten Element in vue.js

9

Ich habe zwei verschachtelte Komponenten, was ist der richtige Weg, um auf die untergeordneten Methoden von den Eltern zuzugreifen?

this.$children[0].myMethod() scheint den Trick zu machen, aber es ist ziemlich hässlich, nicht wahr, was kann der bessere Weg sein:

%Vor%     
al3x 04.12.2016, 08:58
quelle

2 Antworten

11

Eltern-Kind-Kommunikation in VueJS

Wenn eine Stamm-Vue-Instanz für alle Nachkommen über this.$root zugänglich ist, kann eine Elternkomponente über das Array this.$children auf untergeordnete Komponenten zugreifen, und eine Kindkomponente kann über this.$parent auf ihre Eltern zugreifen. Dies könnte Ihr erster Instinkt sein um direkt auf diese Komponenten zuzugreifen.

Die VueJS-Dokumentation warnt vor allem aus zwei sehr guten Gründen:

  • Es verbindet die Eltern eng mit dem Kind (und umgekehrt)
  • Sie können sich nicht auf den Status des Elternteils verlassen, da er geändert werden kann durch eine Kindkomponente.

Die Lösung besteht darin, die benutzerdefinierte Ereignisschnittstelle von Vue zu verwenden

Mit der von Vue implementierten Ereignisschnittstelle können Sie den Komponentenbaum auf und ab kommunizieren. Durch die Nutzung der benutzerdefinierten Ereignisschnittstelle haben Sie Zugriff auf vier Methoden:

  1. $on() - ermöglicht Ihnen, einen Listener in Ihrer Vue-Instanz zu deklarieren, mit dem Sie auf Ereignisse
  2. hören können
  3. $emit() - ermöglicht das Auslösen von Ereignissen auf derselben Instanz (self)

Beispiel mit $on() und $emit() :

%Vor% %Vor%

Antwort aus dem ursprünglichen Post: Kommunizieren zwischen Komponenten in VueJS

    
Yosvel Quintero 04.12.2016, 09:24
quelle
2

Sie können ref verwenden.

%Vor%

Wenn Sie eine enge Kopplung nicht mögen, können Sie den Event Bus wie abgebildet verwenden von @Yosvel Quintero. Im Folgenden finden Sie ein weiteres Beispiel für die Verwendung des Ereignisbusses, indem Sie den Bus als Requisite übergeben.

%Vor%

Code der Komponente.

%Vor%

Ссылка

    
Desmond Lua 30.11.2017 04:13
quelle

Tags und Links