Das Implementierungsprinzip der bidirektionalen Datenbindung von Vue2.0/3.0Zweiseitige Datenbindung bedeutet einfach, dass Änderungen an den Daten dazu führen können, dass die Seite neu gerendert wird. Das Prinzip von Vue2.0 ES5: Object.defineProperty fängt Daten ab Einfaches kleines Etui <Text> Name: <span id="name"></span> <br /> <Eingabetyp="Text" id="Eingabename" /> </body> Durch Ändern des Wertes im Eingabefeld ändert sich der Wert im Bereich entsprechend. Die Änderung der Daten kann die Ansicht <Skript> lass obj = { Name:'' } Objekt.defineProperty(obj,'name',{ erhalten(){ return this.name //Beachten Sie, dass die Fehlerdemonstration damit keine Endlosschleife bilden kann und ein neuer Wert vorbereitet werden muss}, setze(Wert){ } }) </Skript> Richtiges Schreiben <Skript> lass obj = { Name: "" }; : Lassen Sie uns das neue Obj = JSON.parse(JSON.stringify(obj)); Objekt.defineProperty(obj, "Name", { erhalten() { gibt neuen Objektnamen zurück; }, setze(Wert) { if (val === newObj.name) return; // Erhöhen Sie die Beurteilung, um die Leistung zu optimieren. Wenn der neue Wert mit dem alten identisch ist, geben Sie ihn zurück. Wenn er unterschiedlich ist, weisen Sie den Wert erneut zu newObj.name = val; Beobachter(); } }); // Neuzuweisungsmethode function obServer() { spanName.innerHTML = newObj.name; //Wert von obj.name abrufen inputName.value = newObj.name; } obServer(); //Einmal am Anfang ausführen setTimeout(() => { obj.name = "Objekt"; }, 1000); </Skript> Ausführungslogik 1. setTimeout wird 1 Sekunde später ausgeführt und ändert die Daten, um das Set (Val) von obj.name auszulösen. 2. Holen Sie sich den neuesten Wert und geben Sie ihn an newObj.name weiter, um die Methode obServer() auszuführen 3. Holen Sie sich den neuesten Wert und weisen Sie spanName.innerHTML = newObj.name; inputName.value = newObj.name; zu. Der Wert des Eingabefelds ändert sich und der Wert des Span-Felds ändert sich entsprechend Eingabename.oninput = Funktion() { obj.name = dieser.wert; }; Dieser Vorgang wird in Vue als V-Modell bezeichnet. Mängel von Vue 2.01. Die Originaldaten müssen geklont werden, sonst tritt die oben erwähnte Endlosschleife auf 2. Wenn wir das Abrufen und Festlegen von Daten in einem Objekt abfangen möchten, müssen wir die Attribute im Objekt einzeln festlegen und sie separat abhören. Wenn mehrere Attribute vorhanden sind, müssen wir sie durchlaufen und separat abhören. Rückblick auf die Daten in vue2.0 Daten(){ zurückkehren { obj:{} } } this.obj.name='XXX' //Dieser Vorgang funktioniert nicht, da obj am Anfang keinen Namen hat, sodass keine Überwachung durchgeführt wird. Dies wird durch den zweiten Punkt oben verursacht OK, schauen wir es uns noch einmal an. Funktionen und Vorteile von 3.0Hauptsächlich verwendet der Proxy in SE6 <Skript> lass obj = {}; obj = neuer Proxy(obj, { bekomme(Ziel, Eigenschaft) { console.log("D"); Ziel zurückgeben[Eigenschaft]; }, setze(Ziel, Eigenschaft, Wert) { console.log("Z"); Ziel[Eigenschaft] = Wert; } }); //Für die Überwachung des gesamten Objekts ist keine Angabe von Attributen erforderlich, was der Überwachung aller Attribute im Objekt entspricht. Schreiben Sie also einfach den Gesamtsatz get </Skript> 1. Holen Sie sich obj.name, um get auszulösen. Hier ist kein Name vorhanden, aber es kann weg, da kein Wert vorhanden ist, also gibt es undefiniert zurück. 2. Legen Sie den Namenswert fest, um den Triggersatz anzuzeigen 3. Holen Sie sich obj.name erneut, um zu sehen, ob ein Wert vorhanden ist Unabhängig davon, ob Sie jetzt ein bestimmtes Attribut im Objekt haben, wird hier das gesamte Objekt überwacht. Alle zukünftigen Attribute im Objekt werden die Mängel von 2.0 ausgleichen. 1. Kein Klonen nötig 2. Es ist nicht nötig, die Eigenschaften jedes Objekts einzeln festzulegen. Legen Sie sie einfach für das gesamte Objekt fest. Das ist sauber und hygienisch. Implementieren Sie den obigen 2.0-Vorgang erneut <Skript> lass obj = {}; obj = neuer Proxy(obj, { bekomme(Ziel, Eigenschaft) { console.log("D"); Ziel zurückgeben[Eigenschaft]; }, setze(Ziel, Eigenschaft, Wert) { console.log("Z"); Ziel[Eigenschaft] = Wert; Beobachter(); } }); //Für die Überwachung des gesamten Objekts ist keine Angabe von Attributen erforderlich, was der Überwachung aller Attribute im Objekt entspricht. Schreiben Sie also einfach den Gesamtsatz get // Neuzuweisungsmethode function obServer() { spanName.innerHTML = obj.name; //Wert von obj.name abrufen inputName.value = obj.name; } obServer(); //Einmal am Anfang ausführen setTimeout(() => { obj.name = "Objekt"; }, 1000); Eingabename.oninput = Funktion() { obj.name = dieser.wert; }; </Skript> ZusammenfassenDies ist das Ende dieses Artikels über das Implementierungsprinzip der bidirektionalen Datenbindung von Vue2.0/3.0. Weitere relevante Inhalte zum bidirektionalen Datenbindungsprinzip von Vue finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird! Das könnte Sie auch interessieren:
|
>>: So stellen Sie mit Docker schnell einen Elasticsearch-Cluster bereit
Vorwort Unter dem Einfluss einiger CSS-Interaktio...
Ich habe gerade Ubuntu installiert und als ich es...
Ich glaube, jeder kennt dieses Gefühl: Ein Video m...
Isolationsebene für Datenbanktransaktionen Es gib...
Hintergrund Der Unternehmenscode wird Dritten zur...
Ein WeakMap-Objekt ist eine Sammlung von Schlüsse...
Vorwort Während meines Praktikums in der Firma ha...
Inhaltsverzeichnis 1. Homepage-Erstellung 1. Prod...
Inhaltsverzeichnis 1. Software- und Systemabbild ...
Bevor die neue CSS-Eigenschaft „contain“ vorgeste...
Hash-Join Für die Ausführung von Hash Join sind k...
Inhaltsverzeichnis Ich habe vor Kurzem React gele...
In diesem Artikel werden die detaillierten Schrit...
XHTML definiert drei Dokumenttypdeklarationen. Am...
Wann ist die Installation durchzuführen? Wenn Sie...