2017-06-26 6 views
1

Mit Vue.js ist es möglich, auf ein instanziiertes Vue.js-Komponentenobjekt aus dem globalen JavaScript-Bereich zuzugreifen? Oder instanziert Vues Interna die Objekte so, dass sie nicht zugänglich sind?Zugriff auf definierte Vue-Komponenten aus dem globalen Gültigkeitsbereich

d.h. Ich habe Code, der eine Komponente

Vue.component('component-name', { 
    /*...*/ 
}); 

und dann ein Tag verwendet, dass die Komponente

<component-name> 
    /* can user templates with component objects vars {{foo}} 
</component-name> 

Vues Vorlage Rendering-Code ist schließlich Zugriff auf ein JavaScript-Objekt definiert. Gibt es eine Möglichkeit für mich, per Code einen Blick auf das instantiierte Vue-Komponentenobjekt zu werfen? So etwas wie

var theComponent = getInstantiatedComponent('component-name'); 

Ich bin mir bewusst, der Vue.js Chrome Debugger - aber ich würde lke zu wissen, ob iits möglich, diese Objekte zugreifen über Code, und was das Syntax ist (und meine Chrome Plugins-Fähigkeiten sind zu schwach, um im Debugger-Plugin nachzufühlen, was sie tun.

+1

Wonach suchen Sie? In den meisten Lebenszyklusereignissen können Sie 'this' untersuchen und sehen die Komponente selbst. – Bert

+0

@BerTevans danke für Ihre Aufmerksamkeit! Wenn mein Kontext hilft: Ich arbeite an Entwicklerwerkzeugen. Ich suche nichts anderes als das, wonach ich suche - eine Möglichkeit, auf die instanziierten Komponentenobjekte aus dem globalen JavaScript-Bereich zuzugreifen. –

+1

Aus dem globalen Gültigkeitsbereich können Sie das Ergebnis des Vue-Konstruktors erfassen ('const app = new Vue (...)'), und von dort aus können Sie in den vollständigen Komponentenbaum eintauchen, obwohl dieser nicht gut dokumentiert ist. – Bert

Antwort

1

Es sieht so aus, als würden die Vue Dev Tools das DOM scannen, um Root-Instanzen von Vue zu finden.

Siehe Scan-Funktion here. Im Wesentlichen sieht es durch die Elemente auf der Seite aus, die versuchen, Elemente mit der Eigenschaft __vue__ zu finden. Von dort aus trifft es einige Entscheidungen, um festzustellen, ob es sich um eine Root-Instanz handelt.

Sobald Sie einen Stamm haben, sollten Sie in der Lage sein, seine Eigenschaften zu durchlaufen (wie $children), um Instanzen von Komponenten zu finden.

Verwandte Themen