Implementierung der bidirektionalen Bindung von übergeordneten und untergeordneten Komponentendaten im Front-End-Framework Vue

Implementierung der bidirektionalen Bindung von übergeordneten und untergeordneten Komponentendaten im Front-End-Framework Vue

Umsetzungsideen:

Übergeben Sie Werte von übergeordneten an untergeordnete Komponenten: Verwenden Sie props Attribut. ( props ist die Pluralabkürzung von property )
Übergeben Sie Werte von untergeordneten an übergeordnete Komponenten: Verwenden Sie benutzerdefinierte Ereignisse.

1. Einweg-Wertübertragung zwischen übergeordneten und untergeordneten Komponenten

1. Wert vom übergeordneten Element an das untergeordnete Element weitergeben

Das übergeordnete Element übergibt den Wert an die untergeordnete Komponente, und nachdem die untergeordnete Komponente die Daten empfangen hat, speichert sie diese in ihrer eigenen Variable.

//Methode zum Schreiben der übergeordneten Komponente <cld :numP="num" ></cld> 
 
//Unterkomponentendefinition und Datenkomponenten:{ 
 cld:{ 
  Vorlage:'#Kind', 
  Requisiten:{ 
   numP:Nummer 
  }, 
 } 
} 
 
//Inhalt der Unterkomponente <template id="child"> 
 <div> 
  {{ numP }} 
 </div> 
</Vorlage> 


Props werden verwendet, um den von der übergeordneten Komponente übergebenen Wert zu empfangen. Es gibt viele Möglichkeiten, Props zu schreiben, beispielsweise:

//Methode 1: Dateneigenschaften direkt empfangen: ['numP'] 
 
//Methode 2: Typbeschränkungseigenschaften hinzufügen: [ 
 numP: Nummer 
 ]  
 
//Methode 3: Standardwerteigenschaften hinzufügen: [ 
 AnzahlP: { 
  Typ: Nummer, 
  Standard: 0 
  } 
]  
 
//Methode 4: Ist es notwendig, den Wert von Requisiten zu begrenzen: [ 
 AnzahlP: { 
  Typ: Nummer, 
  Standard: 0, 
  require:true //Erforderlichen Wert hinzufügen, andernfalls wird ein Fehler gemeldet} 
]  
 
//Methode 5: Verwenden von Objektform-Eigenschaften: { 
 AnzahlP: { 
  Typ: Nummer, 
  Standard: 0, 
 } 
} 

2. Wertübertragung vom Kind auf den Vater

Das Kind übergibt Werte hauptsächlich über benutzerdefinierte Ereignisse an die übergeordnete Komponente. Die spezifischen Beispiele sind wie folgt:

// Inhalt der übergeordneten Komponente <div> 
 Die von der untergeordneten Komponente erhaltenen Daten sind {{getNum}} 
 <cld :numb="num" @accept="getNumC"></cld> 
</div> 
 
//Methoden der übergeordneten Komponente methods:{ 
 getNumC(Daten){ 
  this.getNum = data //Daten von untergeordneten Komponenten empfangen} 
}, 
//Unterkomponentendefinition Komponenten:{ 
 cld:{ 
  Vorlage:'#Kind', 
  Daten(){ 
   zurückkehren { 
    numC:1314 //Unterkomponentendatendefinition} 
  }, 
  montiert(){ 
    this.$emit('accept', this.numC) // benutzerdefiniertes Ereignis auslösen} 
  } 
}, 

2. Zweiwegebindung von übergeordneten und untergeordneten Komponentendaten

Die Daten von Vue fließen in eine Richtung, und es gab in vue noch nie eine bidirektionale Bindung. Die von v-model implementierte bidirektionale Bindung ist nur syntaktischer Zucker.

Methode 1: Verwenden Sie watch , um eine bidirektionale Datenbindung zwischen übergeordneten und untergeordneten Komponenten zu implementieren. Das konkrete Beispiel lautet wie folgt:

<div id="app"> 
 Daten<br>{{num}} 
 <Eingabetyp="Text" v-Modell="num"><br> 
 <cld :numb="num" @accept="getNumC"></cld> 
</div> 
//Inhalt der Unterkomponente <template id="child"> 
 <div> 
  Daten<br>{{childNum}} 
  <Eingabetyp="Text" v-Modell="Kindnummer" /> 
 </div> 
</Vorlage> 
 
  <!-- Kommunikation zwischen übergeordneten und untergeordneten Komponenten--> 
const app = new Vue({ 
 el:'#app', 
  Daten:{ 
   Zahl: '520', 
   }, 
  Methoden:{ 
   getNumC(Daten){ 
    this.num = Daten 
   } 
  }, 
  Komponenten: { 
   cld:{ 
    Vorlage:'#Kind', 
    Requisiten:{ 
     Zahl:Zeichenfolge 
    }, 
   Daten(){ 
    zurückkehren { 
     Kinderzahl:0, 
    } 
   }, 
  betrachten:{ 
   Nummer:Funktion(){ 
    diese.Kindnummer = diese.Nummer 
   }, 
   KindNum:Funktion(){ 
    dies.$emit('akzeptieren',diese.childNum) 
    } 
   }, 
  montiert(){ 
   diese.Kindnummer = diese.Nummer 
   } 
  } 
 }  
}) 


Methode 2: sync -Modifikator zum Erreichen einer bidirektionalen Bindung

Funktionalität, die durch den .sync-Modifikator in Vue 1.x bereitgestellt wird. Wenn eine untergeordnete Komponente den Wert einer Eigenschaft mit .sync ändert, wird die Änderung auch mit dem in der übergeordneten Komponente gebundenen Wert synchronisiert. Dies ist praktisch, kann jedoch auch zu Problemen führen, da dadurch der unidirektionale Datenfluss unterbrochen wird. (Daten fließen von oben nach unten, Ereignisse fließen von unten nach oben)

<cld :numb.sync="Anzahl" ></cld> 
// wird erweitert zu: 
<cld:numb="Balken" @update:numb="Wert => Balken = Wert"/> 


Wenn die Komponente den Wert von numb aktualisieren muss, muss ein Aktualisierungsereignis ausgelöst werden:

dies.$emit("update:numb", neuerWert ); 


Die spezifischen Anwendungsbeispiele sind wie folgt:

// Übergeordnete Komponente <Father :foo.sync="foo"></Father> 
 
//Eigenschaften der untergeordneten Komponente: ['foo'], 
Daten() { 
  zurückkehren { 
   newFoo: dies.foo; 
   } 
}, 
Methoden:{ 
 hinzufügen:Funktion(){ 
  diese.neueMsg=10; 
  dies.$emit('update:foo',dies.newFoo); 
 } 
} 

Dies ist das Ende dieses Artikels über die bidirektionale Bindung von übergeordneten und untergeordneten Komponentendaten im Front-End-Framework Vue. Weitere relevante Inhalte zur bidirektionalen Bindung von übergeordneten und untergeordneten Komponentendaten in Vue finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Beispielcode einer benutzerdefinierten Vue-Komponente zur Implementierung bidirektionaler V-Model-Bindungsdaten
  • Das Prinzip und die Implementierung der bidirektionalen Bindung in Vue2.x
  • Eine kurze Diskussion über das Prinzip des bidirektionalen Ereignisbindungs-V-Modells von Vue
  • Verwenden von js zum Implementieren der bidirektionalen Bindungsfunktion von Daten in Vue2.0
  • So implementieren Sie eine bidirektionale Bindungsfunktion in vue.js mit reinem JS
  • Detaillierte Erläuterung der bidirektionalen Bindung von Vue

<<:  Detaillierte MySQL-CRUD-Anweisungen zum Hinzufügen, Löschen, Ändern und Abfragen einer einzelnen Tabelle

>>:  Problem „Nicht genügend Speicher“ und Lösung, wenn Docker Elasticsearch startet

Artikel empfehlen

Grafisches Tutorial zur Installation von CentOS7 auf VMware 15.5

1. Erstellen Sie eine neue virtuelle Maschine in ...

Hinweise zur Speicherverwaltung von Linux-Kernel-Gerätetreibern

/********************** * Linux-Speicherverwaltun...

Beispiel zum Aktivieren des Brotli-Komprimierungsalgorithmus für Nginx

Brotli ist ein neues Datenformat, das eine um 20 ...

So deinstallieren Sie MySQL 5.7.19 unter Linux

1. Finden Sie heraus, ob MySQL zuvor installiert ...

Verwendung und Unterschied von Vue.set() und this.$set()

Wenn wir Vue zur Entwicklung verwenden, kann eine...

Tutorial-Diagramm zur Konfiguration der Tomcat-Umgebungsvariablen unter Win10

Vor der Konfiguration müssen wir Folgendes tun: 1...

Analyse des SELECT-Abfrageausdrucks in der MySQL-Datenbank

Ein großer Teil der Datenverwaltung besteht aus S...

Grafisches Tutorial zur Installation und Konfiguration von MySQL 8.0.25

Das neueste Download- und Installationstutorial f...