Heim > Web-Frontend > js-Tutorial > Hauptteil

Entwurfsprozess des Ereignissystems der Vue.js-Komponentenbibliothek (Code)

不言
Freigeben: 2018-09-10 17:19:46
Original
1386 Leute haben es durchsucht

In diesem Artikel geht es um den Designprozess (Code) des Vue.js-Komponentenbibliotheks-Ereignissystems. Ich hoffe, dass er für Sie hilfreich ist.

Nehmen wir die Eingabenummer als Beispiel:

@ ist die Abkürzung für v-on-Anweisung, die zum Binden von Ereignis-Listenern verwendet wird:

<InputNumber @on-change="change" :max="10" :min="1" v-model="value1">
</InputNumber>
Nach dem Login kopieren

Wenn wir Komponenten verwenden, An Das Ereignis von 自定义 wird registriert:

methods: {
    change (v) {
        console.log(v)
    }
}
Nach dem Login kopieren

Die Möglichkeit, es innerhalb der Komponente auszulösen, ist ebenfalls sehr einfach:

ruft $emit auf, um das Ereignis in der aktuellen Instanz auszulösen, und der Ereignisname lautet on-change
this.$emit('on-change', val);
Nach dem Login kopieren

Hier kommt die Idee: Wenn die InputNumber äußere Schicht in einer bestimmten FormItem Komponente verschachtelt ist, sind die gegenseitigen Aufrufe zwischen Ereignissen ähnlich, aber es gibt eine zusätzliche Annahme:

verschachtelte Beziehung, Vielleicht gibt es ein mehrstufiges Eltern-Kind-

wie element und iview. Es wurde ein weiteres mixins entworfen, das eine Methode bereitstellt: dispatch

Es akzeptiert 3-Parameter :

  • componentName Komponentenname

  • eventName Benutzerdefinierter Ereignisname

  • params Vom Ereignis übergebene Parameter

dispatch(componentName, eventName, params) {
}
Nach dem Login kopieren

Ähnlich wie input-number werden beispielsweise viele in dieses Formular eingebettete Komponenten so gestaltet, dass sie mit FormItem interagieren:

this.dispatch('FormItem', 'on-form-change', val);
Nach dem Login kopieren

Wenn wir das Komponente, aufgepasst:FormItem

export default {
    name: 'FormItem'
}
Nach dem Login kopieren
Dann registrieren Sie auf die gleiche Weise ein benutzerdefiniertes Ereignis:

<Form-item @on-form-change="test">
</Form-item>
Nach dem Login kopieren
Werfen wir einen Blick auf das Innere der Versandfunktion:

Die Die Idee besteht darin, Schicht für Schicht nach oben zu gehen und das übergeordnete Element zu finden:

  • $parent – ​​übergeordnete Instanz

  • $root – das Stamm-Vue Instanz des Komponentenbaums

var parent = this.$parent || this.$root;
Nach dem Login kopieren
Rufen Sie den Namen der übergeordneten Komponente ab:

var name = parent.$options.name;
Nach dem Login kopieren
Schleifenbeurteilung starten:

while (parent && (!name || name !== componentName)) {
    // ...
}
Nach dem Login kopieren
Zum Beispiel das obige

ruft intern Dispatch auf und übergibt die Parameter, was bedeutet, dass es weiter sucht. Das übergeordnete Element input-number ist das nameFormItem von

innerhalb von while:

. Suchen Sie dann das übergeordnete Beispiel, und dann den Namen abrufen

parent = parent.$parent;
if (parent) {
    name = parent.$options.name;
}
Nach dem Login kopieren
Wenn schließlich gefunden wird:

ist dasselbe wie das anfängliche Auslösen des benutzerdefinierten Ereignisses: $emit

if (parent) {
    parent.$emit.apply(parent, [eventName].concat(params));
}
Nach dem Login kopieren
Verwandte Empfehlungen:

Vue.js-Komponentenkommunikation von der untergeordneten Komponente zur übergeordneten Komponente (Code)

So verwenden Sie die mobile Komponentenbibliothek von Vue.js

Das obige ist der detaillierte Inhalt vonEntwurfsprozess des Ereignissystems der Vue.js-Komponentenbibliothek (Code). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!