Fallstudie zur dynamischen Datenbindung von this.$set in Vue

Fallstudie zur dynamischen Datenbindung von this.$set in Vue

Ich finde, dass die Erklärung von this.$set im Internet chaotisch ist. Lassen Sie mich die Bindung einzelner Daten, Objekte, Arrays und JSON-Daten zusammenfassen.

Kommen wir ohne weitere Umschweife direkt zum Code:

<Vorlage>
  <div>
    <!-- Einzelne Daten -->
    <button @click="text0a">text0</button>
    <p>text0: {{text0}}</p>
    <!-- Objekt -->
    <button @click="textObja">TextObj</button>
    <p>textObj.text1: {{textObj.text1}}</p>
    <!-- Array -->
    <button @click="textArra">textArr</button>
    <p>textArr[1]: {{textArr[1]}}</p>
    <!-- json-Daten -->
    <button @click="textJsona">textJson</button>
    <p>textJson[1].t5: {{textJson[1].t5}}</p>
  </div>
</Vorlage>
<Skript>
Standard exportieren {
  Daten() {
    zurückkehren {
      text0: '',
      textObj: {},
      textArr: [],
      textJson:[
        {t0: ''},
        {t4: ''},
        {t7: ''},
      ]
    }
  },
  Methoden: {
    text0a: Funktion () {
      lass vm = dies
      let text100 = "efghjk"
      vm.$set(vm,'text0',text100) 
      //Entspricht vm.$set(vm,'text0','efghjk')
    },
    textObja: Funktion () {
      lass vm = dies
      let textObj100 = {
        text1: '123',
        text2: '456'
        }
      vm.$set(vm.textObj,'text1',textObj100.text1) 
      //Dies entspricht vm.$set(vm,'textObj',textObj100)
    },
    textArra: Funktion () {
      lass vm = dies
      let textArr200 = ['a1','a2','a3']
      vm.$set(vm,'textArr',textArr200)
    },
    textJsona: Funktion () {
      lass vm = dies
      let textJson300 = [
        {t1: 't1',t2: 't2',t3: 't3'},
        {t4: 't4',t5: 't5',t6: 't6'},
        {t7: 't7',t8: 't8',t9: 't9'},
      ]
      vm.$set(vm.textJson[1],'t5',textJson300[1].t5) 
      //Dies entspricht vm.$set(vm,'textJson',textJson300)
    }
  }
}
</Skript>
<Stil>
</Stil>

Ergänzung: Vue verwendet $set, um Attribute für Daten dynamisch festzulegen

Im eigentlichen Entwicklungsprozess werden beim Binden eines Modells an ein Formularelement die Attribute des gebundenen Elements basierend auf den Hintergrunddaten dynamisch generiert. Wenn Sie die herkömmliche Zuordnungsmethode verwenden, können Sie die Ansicht nicht aktualisieren

Muss verwendet werden

dies.$set(Datenname,Schlüsselname,Schlüsselwert)
Standard exportieren {
 Daten:{
  //Definieren Sie zuerst ein leeres Objekt formObject:{},
  ArrayList:[],
 },
 montiert() {
  diese.initPage()
 },
 Methoden:{
  initPage(){
   dies.$store.dispatch(namespace/callData).dann(res=>{
    //Schlüsselwert für die Daten festlegen
    res.data.forEach(item=>{
     // ❗❗❗❗❗ this.formObject[item.name] = item.value // ❗❗❗❗ Diese Methode kann die Ansicht nicht aktualisieren this.$set(this.formObject, item.name, item.value) // ✅✅✅✅Kann die Ansicht aktualisieren})
   })
   // Ändern Sie das Array this.$store.dispatch(namespace/callData).then(res=>{
    //Schlüsselwert für die Daten festlegen
    this.$set(this.arrayList,0,(res.data)[0].id) ✅✅✅✅Kann die Ansicht aktualisieren})
  }
 }
}

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:
  • Verwendung und Unterschied von Vue.set() und this.$set()
  • Lösung für den Vue-Fehler TypeError: this.$set ist keine Funktion
  • Vue.set() this.$set() löst Ansichtsaktualisierungen und Überlegungen aus
  • Analysieren von Vue.set() und this.$set() aus dem Vue-Quellcode
  • Detaillierte Erklärung zur Verwendung von this.$set in Vue

<<:  Eine kurze Erläuterung der ifnull()-Funktion ähnlich der nvl()-Funktion in MySQL

>>:  Detaillierte Erklärung der Installationsbefehle und Verwendung von Docker und FastDFS

Artikel empfehlen

Detaillierte Erklärung, warum MySQL nicht mit UNION zwei Abfragen verbinden kann

Überblick UNION Mit dem Schlüsselwort „Verbindung...

Hinweise zur IE8-Kompatibilität, die mir aufgefallen sind

1. getElementById von IE8 unterstützt nur IDs, nic...

Tiefes Verständnis von Zeilenhöhe und vertikaler Ausrichtung

Mehrere Konzepte Zeilenbox: Eine Box, die eine In...

Detaillierte Erklärung zu sinnvollen Einstellungen des MySQL sql_mode

Sinnvolle Einstellung des MySQL sql_mode sql_mode...

Gogs+Jenkins+Docker automatisierte Bereitstellung von .NetCore-Schritten

Inhaltsverzeichnis Umgebungsbeschreibung Docker-I...

MySQL-Code zur Implementierung der Sequenzfunktion

MySQL implementiert Sequenzfunktion 1. Erstellen ...

Tiefgreifendes Verständnis der sieben Kommunikationsmethoden von Vue-Komponenten

Inhaltsverzeichnis 1. Requisiten/$emit Einführung...

Nginx kompiliert nginx - neues Modul hinzufügen

1. Vorhandene Module anzeigen /usr/local/nginx/sb...

css3-Animation, Ballrollen, js-Steuerung, Animationspause

Mit CSS3 können Animationen erstellt werden, die ...