2017-12-04 2 views
2

Ich versuche, einige Plugins nach diesem Artikel zu erstellen:Wie kann man mounted oder created in einem Vue-Plugin aufrufen?

https://alligator.io/vuejs/creating-custom-plugins/

Ich habe ein Plugin, das etwas laufen muss, wenn die Root-Vue Instanz Halterungen oder erstellt wird. Bis jetzt kann ich nur einen Weg sehen, etwas in alle Komponenten zu injizieren, was ich nicht möchte.

Ich muss einfach etwas tun, wenn die Haupt-Vue-Instanz mounts. Wie kann ich das mit einem Plugin machen?

Die install Methode aus dem Plugin scheint nicht den Trick zu tun, denn dies scheint vor der eigentlichen created Methode passieren.

Antwort

2

Es ist möglich, mehrere Root-Vue-Komponenten zu verwenden. Eine „Stammkomponente“ ist nur eine Komponente mit der new Syntax und keine übergeordneten Komponente erstellt, so können Sie dies erkennen, wie folgt:

Vue.mixin({ 
    created() { 
    if (!this.$parent) { 
     // This is either the root component or a component 
     // created with `new` and no parent 
    } 
    } 
}) 
+0

Diese Überprüfung wird nun für jede einzelne Komponente durchgeführt werden. Gibt es wirklich keinen effizienteren Weg, dies zu erreichen? –

+0

Ich glaube nicht, nein. Es gibt keine * single * distinct "root" Komponente, die Vue kennt, um Ihnen einen solchen Hook zu bieten. Vielleicht sollten Sie das Steuerelement invertieren, damit die Root-Komponente für die Initialisierung des Plugins in seinem 'created' Hook verantwortlich ist. –

+0

Wie würden Sie übrigens der Haupt-Root-Instanz eine einzige Watch-Eigenschaft hinzufügen, ohne sie jeder einzelnen Instanz hinzuzufügen? –

Verwandte Themen