Detaillierte Erklärung zur Verwendung der benutzerdefinierten Vue-Baumsteuerung

Detaillierte Erklärung zur Verwendung der benutzerdefinierten Vue-Baumsteuerung

In diesem Artikel erfahren Sie, wie Sie das benutzerdefinierte Vue-Baumsteuerelement verwenden. Der spezifische Inhalt ist wie folgt

Effektbild:

Datenstruktur:

Baum: {
        Titel: '', // Titel (Name) 
        Schlüssel: '0',
        Kopf: '', // Avatar selectStatus: false, // Kontrollkästchen ausgewählt Status children: [
          {
            Titel: 'Wangwang Episode 1',
            Taste: '0-0',
            Kopf: '',
            selectStatus: false,
            Kinder: [
              {
                Schlüssel: '0-0-0',
                Titel: 'Wangzai 1',
                Kopf: erfordern('@/assets/wan.jpg'),
                selectStatus: false
              }
            ]
          },
          {
            Titel: 'Wangwang Teil 2',
            Taste: '0-1',
            Kopf: '',
            selectStatus: false,
            Kinder: [
              {
                Titel: „Erste Mannschaft der zweiten Liga von Wangwang“,
                Schlüssel: '0-1-0',
                Kopf: '',
                selectStatus: false,
                Kinder: [
                  {
                    Titel: 'Wangwang Zweite Liga, Mannschaft 1, Klasse 1',
                    Schlüssel: '0-1-0-2',
                    Kopf: '',
                    selectStatus: false,
                    Kinder: [
                      {
                        Titel: 'Wang Zai 3',
                        Schlüssel: '0-1-0-2-0',
                        Kopf: erfordern('@/assets/wan.jpg'),
                        selectStatus: false
                      }
                    ]
                  }
                ]
              }
            ]
          }
        ]
},

Ideen:

/*Der Kern des benutzerdefinierten Tree Controls ist „die Komponente ruft sich selbst auf“. Hier wird das Tree Control in eine Unterkomponente gekapselt*/
<Vorlage>
  <div>
    <div Klasse="Baum-Benutzerdefiniert">
      <div :style="indent" @click="toggleChildren"> //Das toggleChildren-Ereignis ist ein Steuerungsereignis für „Inhalt erweitern“ und „Inhalt schließen“/* 
       Hier ist der spezifische Inhalt der rekursiven Datenanzeige. Der spezifische Inhalt der Rekursion in diesem Projekt ist beispielsweise „Bild/Avatar“, „Titel/Name“, „null/Kontrollkästchen“ aus dem Effektdiagramm.
       Das Wirkungsdiagramm zeigt die Logik:
       <div v-if="!headImg && label" >
       //Wenn kein Avatarbild einen Titel hat, zeige den „Pfeiltitel“-Stil an</div>
        <div v-if="headImg">
       //Wenn ein Avatarbild vorhanden ist, zeige den Stil „avatar-name-checkBox“ an</div>
       */      
      </div>
      <tree-custom // "ruft sich selbst auf"
        :key="children.key" // Schlüsselwert ist eindeutig v-for="children in treeData"  
        v-if="showChildren" // Bestimmen Sie, ob der Inhalt basierend auf dem Ereignis "toggleChildren" erweitert werden soll:treeData="children.children" // Im Folgenden sind einige Eigenschaften aufgeführt, die Sie verstehen sollten! Keine weiteren Worte!
        :label="Kinder.Titel"
        :headImg="Kinder.Kopf"
        :pkid="Kinder.Schlüssel"
        :depth="depth+1" // Dies wird verwendet, um den Einrückungsstil jeder Zeile zu steuern. Sie können nach unten => indent () gehen, um die spezifische Verwendung anzuzeigen: selectStatus="children.selectStatus"
        v-bind="$attrs" // Diese beiden werden verwendet, um die Kommunikation zwischen übergeordneten und untergeordneten Komponenten zu implementieren. v-on="$listeners"
      >
      </Baum-benutzerdefiniert>
    </div>
  </div>
</Vorlage>
<Skript>
Standard exportieren {
  Name: 'TreeCustom', // Geben Sie unserer Komponente einen Namen! Andernfalls, wie Sie data () aufrufen {
    zurückkehren {
      showChildren: true, // Dies sind die Daten, die steuern, ob der Inhalt angezeigt wird, also erweitert und reduziert wird!
      currentInfoData: {} // Dies wird verwendet, um die Daten der aktuellen Zeile abzurufen. Der Einfachheit halber habe ich die spezifische Verwendung des obigen Codes gelöscht ~ sie ist nicht sehr aussagekräftig}
  },
  //Der Standardwert des Objekts sollte von einer Factory-Funktion zurückgegeben werden, um Fallstricke zu vermeiden props: {
    Baumdaten: {
      Typ: Array,
      Standard: () => []
    },
    Etikett: {
      Typ: Zeichenfolge,
      Standard: () => '
    },
    Tiefe:
      Typ: Nummer,
      Standard: () => 0
    },
    KopfBild: {
      Typ: Zeichenfolge,
      Standard: () => '
    },
    p-Kind:
      Typ: Zeichenfolge,
      Standard: () => '
    },
    wähleStatus: {
      Typ: Boolean,
      Standard: () => null
    }
  },
  berechnet: {
    indent () { // Verschiedene Ebenen von Einrückungsstilen definieren return { transform: `translate(${(this.depth - 1) * 15}px)` }
    }
  },
  Methoden: {
    Untergeordnete Elemente umschalten () {
      dies.showChildren = !diese.showChildren
    },
    checkBoxSelectChange (e) {
      const geprüft = e.target.geprüft
      wenn (aktiviert) {
       //Verwenden Sie die Methode $listeners, um die Funktion des Vorgängers aufzurufen. Da es sich um eine rekursive Komponente handelt, haben die Komponenten möglicherweise keine strikte Eltern-Kind-Beziehung, sodass Methoden wie $emit und $parent nicht geeignet sind this.$listeners.addSelectedData(this.currentInfoData)
      }
      wenn (!aktiviert) {
        dies.$listeners.deleteSelectedData(dies.currentInfoData)
      }
    },
    getCurrentInfo (Bezeichnung, Kopfbild, pkid) {
      dies.currentInfoData = {
        Schlüssel: pkid,
        Titel: Etikett,
        Kopf:KopfBild
      }
    }
  }
}
</Skript>
/*Komponentenaufrufmethode*/
<div Klasse="Baum-Scroll">
  <Baum-Benutzerdefiniert
    :label="Baum.Titel"
    :headImg="Baum.Kopf"
    :treeData="Baum.Kinder"
    :pkid="Baum.Schlüssel"
    :Tiefe="0"
    :selectStatus="Baum.selectStatus"
    @addSelectedData="AusgewählteDaten hinzufügen"
    @deleteSelectedData="deleteSelectedData" />
</div>

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • Spezifische Verwendung von Vue+iview mithilfe von Tree Controls
  • Lösen Sie das Problem, dass die defaultExpandAll-Einstellung des Tree-Controls in Ant Design Vue ungültig ist
  • Eine Fallstudie zur Implementierung von Tree-Tree-Steuerelementen mit Vue ohne Abhängigkeit von Drittanbietern
  • Vue+Element UI-Baumsteuerung integriert Dropdown-Funktionsmenü (Baum + Dropdown + Eingabe)
  • Vue rekursive Komponente tatsächlicher Kampf einfache Baumsteuerung Beispielcode
  • Detaillierte Erläuterung des Vue-Elements Tree Tree Control Filling Pit
  • Das Vue-ElementUI-Baum-Baumsteuerelement erhält die übergeordnete Knoten-ID-Instanz
  • Vue verwendet rekursive Komponenten, um Beispielcode für Baumsteuerelemente zu schreiben
  • So ändern Sie die Element-UI-Baumstruktursteuerung von vue.js in iview
  • Beispielcode zum Hinzufügen von Funktionen zum Hinzufügen, Löschen und Ändern zur Ele.me-Baumsteuerung von VUE

<<:  Verwenden Sie ein Shell-Skript, um die Python3.8-Umgebung in CentOS7 zu installieren (empfohlen)

>>:  Nginx+FastDFS zum Erstellen eines Image-Servers

Artikel empfehlen

Prinzipielle Beispiele für die vier Netzwerktypen von Docker

Vier Netzwerktypen: Keine: Konfigurieren Sie kein...

Detaillierte Erklärung der wechselseitigen Verwendung von Ref in React

Inhaltsverzeichnis 1. Lassen Sie uns zunächst erk...

Detaillierte Erklärung des VueRouter-Routings

Inhaltsverzeichnis Vue-Router 1. Verstehen Sie da...

Detaillierte Erläuterung des Apache SkyWalking-Alarmkonfigurationshandbuchs

Apache SkyWalking Apache SkyWalking ist ein Tool ...

Was Sie beim Schreiben selbstschließender XHTML-Tags beachten sollten

Das img-Tag in XHTML sollte wie folgt geschrieben...

WeChat-Applet implementiert SMS-Login in Aktion

Inhaltsverzeichnis 1. Vorschau der Schnittstellen...

Lösung für den ES-Speicherüberlauf beim Starten von Docker

Fügen Sie die Datei jvm.options zur Elasticsearch...

Tutorial zum Anmelden bei MySQL nach der Installation von Mysql 5.7.17

Die Installation von mysql-5.7.17 wird weiter unt...

Erstellen Sie eine virtuelle Umgebung mit venv in Python3 in Ubuntu

1. Virtuelle Umgebung folgt dem Projekt, erstelle...

Linux-Betrieb und -Wartung – Tutorial zur grundlegenden Datenträgerverwaltung

1. Festplattenpartition: 2. fdisk-Partition Wenn ...

4 Möglichkeiten zum Ändern des MySQL-Root-Passworts (Zusammenfassung)

Methode 1: Verwenden Sie den Befehl SET PASSWORD ...

So vergessen Sie das Passwort von Jenkins in Linux

1. Jenkins-Installationsschritte: https://www.jb5...