Während des Entwicklungsprozesses verwenden wir häufig vm.$refs(this.$refs) der Instanz, um über ref registrierte Komponenten abzurufen und entsprechende Vorgänge auszuführen. Es gibt jedoch Fälle, in denen Elemente nicht abgerufen werden können. Die Hauptursache ist, dass $refs Elemente erst abrufen können, nachdem sie gemountet (gerendert) wurden. Beispielsweise ist es in diesem Fall normal, dass kein Knoten abgerufen werden kann, wenn das Flag von einem wahren Wert auf einen falschen Wert wechselt, denn wenn v-if ein falscher Wert ist, wird der Knoten nicht gerendert. Wenn Sie jedoch von einem falschen Wert zu einem wahren Wert wechseln, können Sie den Knoten möglicherweise nicht abrufen. Dies liegt daran, dass das Rendern Zeit in Anspruch nimmt, was normalerweise mit $nextTick() gelöst werden kann. ... <el-table v-if="flag" ref="table"> <el-table-column prop="prop1"></el-table-column> <el-table-column prop="prop2"></el-table-column> </el-Tabelle> ... Standard exportieren { Methoden: { dies.$refs.table.XXX() } } Es gibt jedoch einen ganz besonderen Fall. Wenn die Seite zum ersten Mal gerendert wird, kann $refs keinen Wert abrufen. Zu diesem Zeitpunkt müssen wir v-show in Betracht ziehen, um Komponentenelemente auszublenden und anzuzeigen. Da v-show durch CSS display:none ausgeblendet ist, wird es am Anfang gerendert und das Element wird auf jeden Fall abgerufen. Ergänzung: Beispiele und Tipps zur Verwendung von ref ($refs) in Vue.js 1. Verwendung zusammengefasst nach amtlichen Dokumenten:Im Abschnitt „Ref“ der Vue.js-Dokumentation habe ich die Verwendung von „Ref“ zur späteren Bezugnahme zusammengefasst. 1. ref wird auf externen Komponenten verwendet HTML-Teil <div id="ref-outside-component" v-on:click="consoleRef"> <component-father ref="outsideComponentRef"> </Komponentenvater> <p>ref befindet sich auf der äußeren Komponente</p> </div> js-Teil var refoutsidecomponentTem = { Vorlage: „<div class='childComp'><h5>Ich bin eine untergeordnete Komponente</h5></div>“ }; var refoutsidecomponent = neuer Vue({ el:"#ref-Außenkomponente", Komponenten: { "Komponenten-Vater":refoutsidecomponentTem }, Methoden:{ consoleRef:Funktion () { console.log(diese); // #ref-outside-component Vue-Instanz console.log(diese.$refs.outsideComponentRef); // div.childComp Vue-Instanz } } }); 2. Ref wird auf externen Elementen verwendet HTML-Teil <!--ref befindet sich auf dem äußeren Element--> <div id="ref-outside-dom" v-on:click="consoleRef" > <Komponenten-Vater> </Komponentenvater> <p ref="outsideDomRef">ref befindet sich auf dem äußeren Element</p> </div> JS-Teil var refoutsidedomTem = { Vorlage: „<div class='childComp'><h5>Ich bin eine untergeordnete Komponente</h5></div>“ }; var refoutsidedom = neuer Vue({ el:"#ref-outside-dom", Komponenten: { "Komponentenvater":refoutsidedomTem }, Methoden:{ consoleRef:Funktion () { console.log(this); // #ref-outside-dom vue Beispiel console.log(this.$refs.outsideDomRef); // <p> ref ist auf dem äußeren Element</p> } } }); 3. Ref wird auf die Elemente innerhalb der lokalen Registrierungskomponente angewendet HTML-Teil <!--Ref auf das Element darin--> <div id="ref-inside-dom"> <Komponenten-Vater> </Komponentenvater> <p>ref ist auf dem Element im Inneren</p> </div> JS-Teil var refinsidedomTem = { Vorlage:"<div Klasse='childComp' v-on:click='consoleRef'>" + "<h5 ref='insideDomRef'>Ich bin eine untergeordnete Komponente</h5>" + "</div>", Methoden:{ consoleRef:Funktion () { console.log(diese); // div.childComp vue-Instanz console.log(diese.$refs.insideDomRef); // <h5 >Ich bin eine untergeordnete Komponente</h5> } } }; var refinsidedom = neuer Vue({ el:"#ref-inside-dom", Komponenten: { "Komponentenvater":refinsidedomTem } }); 4. Ref wird auf die Elemente innerhalb der globalen Registrierungskomponente angewendet HTML-Teil <!--Ref auf das Element innerhalb --Globale Registrierung--> <div id="ref-inside-dom-all"> <ref-innen-dom-quanjv></ref-innen-dom-quanjv> </div> JS-Teil Vue.component("ref-inside-dom-quanjv",{ Vorlage:"<div Klasse='insideFather'> " + "<Eingabetyp='Text' ref='insideDomRefAll' v-on:input='showinsideDomRef'>" + " <p>Ref auf das Element im Inneren - global registriert</p> " + "</div>", Methoden:{ showinsideDomRef:Funktion () { console.log(dies); //Dies ist eigentlich div.insideFather konsole.log(diese.$refs.insideDomRefAll); // <Eingabetyp="text"> } } }); var refinsidedomall = neuer Vue({ el:"#ref-inside-dom-all" }); 2. Fallstricke, auf die Sie achten sollten1. Wenn Sie durch v-for-Traversierung verschiedene Referenzen hinzufügen möchten, denken Sie daran, das Zeichen : hinzuzufügen, d. h. :ref = eine Variable; Dies ist dasselbe wie bei anderen Attributen. Wenn es sich um einen festen Wert handelt, müssen Sie kein :-Zeichen hinzufügen. Wenn es sich um eine Variable handelt, denken Sie daran, ein :-Zeichen hinzuzufügen. 2. Fügen Sie ref durch :ref = eine Variable hinzu (das heißt, fügen Sie :) hinzu). Wenn Sie den Ref erhalten möchten, müssen Sie [0] hinzufügen, wie dies.$refs[refsArrayItem] [0]. Wenn es nicht :ref = eine Variable, sondern ref = ein String ist, müssen Sie es nicht hinzufügen, wie dies.$refs[refsArrayItem] Der Unterschied zwischen Hinzufügen und Nicht-Hinzufügen [0] - nicht erweitert Der Unterschied zwischen Hinzufügen und Nicht-Hinzufügen [0] - Erweitert 3. Wenn Sie das DOM abrufen möchten, nachdem das Dialogfeld „Element-UI“ geöffnet wurde, sollten Sie $nextTick verwenden, anstatt direkt this.$refs.imgLocal2 zu verwenden: console.log('außerhalb von this.$refs.imgLocal2', this.$refs.imgLocal2); setzeTimeout(() => { console.log('this.$refs.imgLocal2 setTimeout', this.$refs.imgLocal2); }, 500); // Nicht empfohlen this.$nextTick(() => { console.log('diese.$refs.imgLocal2 $nextTick', dies.$refs.imgLocal2); }); Das Obige ist meine persönliche Erfahrung. Ich hoffe, es kann Ihnen als Referenz dienen. Ich hoffe auch, dass Sie 123WORDPRESS.COM unterstützen werden. Sollten dennoch Fehler oder unvollständige Überlegungen vorliegen, freue ich mich über eine Korrektur. Das könnte Sie auch interessieren:
|
<<: Beispiel zum Festlegen der pseudostatischen WordPress-Eigenschaft in Nginx
>>: Was sind die neuen Funktionen von Apache Spark 2.4, das 2018 veröffentlicht wird?
Die Funktionen der drei Attribute Flex-Grow, Flex...
Inhaltsverzeichnis Kurzzusammenfassung Heute Mitt...
Wie wir alle wissen, sind Binlog-Protokolle für M...
Inhaltsverzeichnis Vorwort Einrichten der Protoko...
1. Einleitung Wenn ein Webprojekt auf unserem Lin...
Vorwort Um den Unterschied zwischen dem Hinzufüge...
Inhaltsverzeichnis Gängige Zahlungsarten in Proje...
1: Anweisungsreihenfolge der Gruppierungsfunktion...
Frage Frage 1: Wie kann der Leistungsverlust beho...
1. Beim Öffnen der Webseite wird die Meldung „503...
Aufgrund des Standard-Bridge-Netzwerks ändert sic...
Bedürfnisse entdecken Wenn nur ein Teil eines Ber...
Dieser Artikel stellt vor, wie Sie durch Instanzi...
In diesem Artikel wird der spezifische Code von B...
Inhaltsverzeichnis 1. Finde den Spiegel 2. Laden ...