Vue-Entwicklungsbaumstrukturkomponenten (Komponentenrekursion)

Vue-Entwicklungsbaumstrukturkomponenten (Komponentenrekursion)

In diesem Artikelbeispiel wird der spezifische Code der Vue-Entwicklungsbaumstrukturkomponenten zu Ihrer Information geteilt. Der spezifische Inhalt ist wie folgt

brauchen

Auf einer Seite sollten Produktkategorien angezeigt werden, und jede Kategorie sollte mehrere Unterkategorien haben, und Unterkategorien können wiederum Unterkategorien haben.

Um eine Einzelauswahl von allen zu erreichen, werden die Unterklassen einzeln ausgewählt und die übergeordnete Klasse muss ebenfalls als ausgewählt markiert werden.

Die erste Reaktion ist die Baumstruktur und rekursive Aufrufe. Ich erinnere mich, dass es bei meiner Arbeit an WPF vorgefertigte Komponenten gab und ich auch gelernt habe, den entsprechenden Hintergrund zu schreiben. Dieses Mal werde ich selbst eine Front-End-Komponente schreiben.

Dies ist lediglich eine Vue-Komponente, die ich einige Zeit mit dem Schreiben verbracht habe und die optimiert und erweitert werden kann. Ich teile dies einfach mit euch allen.

Wirkung

erreichen

<Vorlage>
  <div id="BaumMenü">
    <div v-for="(Knoten, Index) in Knoten" :class="{'TreeMenu-row-border-bottom': !depth}">
      <div Klasse="TreeMenu-row">
        <img class="TreeMenu-row-selectimg" src="../assets/img/MembersPriceActivity/selected.png" @click="selectNode(0,node)" v-show="node.IsSelected"/>
        <img class="TreeMenu-row-selectimg" src="../assets/img/MembersPriceActivity/select.png" @click="selectNode(1,node)" v-show="!node.IsSelected"/>
        <div Klasse = "TreeMenu-row-firstdiv" :Klasse = "{'TreeMenu-row-border-bottom': node.ChildTypeList&&node.IsExpanded }" @click = "expandNode(!node.IsExpanded,node)">
          <label v-text="Knoten.Name"></label>
          <img class="TreeMenu-row-arrowimg" src="../assets/img/MembersPriceActivity/top.png" v-if="node.ChildTypeList" v-show="!node.IsExpanded">
          <img class="TreeMenu-row-arrowimg" src="../assets/img/MembersPriceActivity/down.png" v-if="node.ChildTypeList" v-show="node.IsExpanded">
        </div>
        <TreeMenu :nodes="node.ChildTypeList" :fatherIndex="index" :depth="tiefe+1" v-on:selectFatherNode="selectFatherNode" v-if="node.ChildTypeList" v-show="!node.IsExpanded"></TreeMenu>
      </div>
    </div>
  </div>
</Vorlage>

javascript - Argumente:

<Skript>
  Standard exportieren{
    Name: "TreeMenu",
    Daten () {
      zurückkehren {
        Warentyp: {
          AUSWEIS: '',
          Übergeordnete ID: '',
          Name: '',
          Code: '',
          Stufe: 0,
          ImgUrl: null,
          UntergeordneteTypliste: []
        }
      }
    },
    Requisiten: {
      Knoten: {
        Typ: Array,
        Standard: () => {
          zurückkehren []
        }
      },
      VaterIndex: {
        Typ: Nummer,
        Standard: 0
      },
      Tiefe:
        Typ: Nummer,
        Standard: 0
      }
    },
    betrachten: {},
    erstellt () {},
    montiert () {},
    zerstört () {},
    Methoden: {
      // Aktuellen Knoten auswählen/abbrechen selectNode (choice, node) {
        node.IsSelected = Auswahl
        dies.selectChildrenNode(Auswahl, Knoten.ChildTypeList || [])
        dies.$emit('selectFatherNode', Auswahl, dies.fatherIndex, dies.nodes.every((node) => { return node.IsSelected === Auswahl }))
      },
      // Ändere den ausgewählten Status der untergeordneten Knoten selectChildrenNode (choice, nodes, self) {
        lass _self = self || dies
        nodes.forEach((node) => { node.IsSelected = Auswahl; _self.selectChildrenNode(Auswahl, node.ChildTypeList || [], _self) })
      },
      //Überprüfen, ob der ausgewählte Status als übergeordneter Knoten geändert werden muss (nur für Aufrufe untergeordneter Knoten)
      selectFatherNode (Auswahl, Index, Kinderstatus) {
        wenn (Auswahl) {
          // Wenn alle untergeordneten Knoten unter dem Knoten [Index] ausgewählt sind, sollte der Knoten [Index] ausgewählt werden, wenn (childrenState) {
            this.nodes[index].IsSelected = Auswahl
            dies.$emit('selectFatherNode', Auswahl, dies.fatherIndex, dies.nodes.every((node) => { return node.IsSelected === Auswahl }))
          }
        } anders {
          // Wenn ein untergeordneter Knoten unter dem Knoten [Index] nicht ausgewählt ist, sollte die Auswahl des Knotens [Index] aufgehoben werden. this.nodes[index].IsSelected = Auswahl
          dies.$emit('selectFatherNode', Auswahl, this.fatherIndex, falsch)
        }
      },
      // Den aktuellen Knoten erweitern/reduzieren expandNode (Auswahl, Knoten) {
        node.IsExpanded = Auswahl
        wenn (!Wahl) {
          this.expandChildrenNode(Auswahl, Knoten.ChildTypeList)
        }
      },
      // untergeordnete Knoten ausblenden expandChildrenNode (Auswahl, Knoten, selbst) {
        lass _self = self || dies
        nodes.forEach((node) => { node.IsExpanded = Auswahl; _self.expandChildrenNode(Auswahl, node.ChildTypeList || [], _self) })
      }
    }
  }
</Skript>

CSS:

<style lang="scss" scoped>
  #BaumMenü {
    .TreeMenu-Zeile{
      Rand links: 30px;
      Schriftgröße: 15px;
      Polsterung: 12px 0 0 0;
    }
    .TreeMenu-row-firstdiv{
      Höhe: 32px;
      Rand links: 30px;
    }
    .TreeMenu-row-arrowimg{
      schweben: rechts;
      Rand rechts: 15px;
      Breite: 13px;
    }
    .TreeMenu-row-selectimg{
      schweben: links;
      Breite: 18px;
      vertikale Ausrichtung: Text unten;
    }
    .TreeMenu-row-border-bottom{
      Rahmen unten: durchgezogen 1px #e6e6e6;
    }
    .TreeMenu-row-border-top{
      Rahmen oben: durchgezogen 1px #e6e6e6;
    }
  }
</Stil>

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:
  • Rekursive Vue.js-Komponente zur Implementierung eines Baummenüs (Beispielfreigabe)
  • Der Vue.js-Komponentenbaum implementiert ein Baummenü mit unbegrenzten Ebenen
  • Vuejs verwendet rekursive Komponenten, um Baumverzeichnisse zu implementieren
  • Der Vue-Komponentenbaum implementiert ein Baummenü
  • Der Vue2-Komponentenbaum implementiert ein Baummenü mit unbegrenzten Ebenen
  • Beispielcode basierend auf der Baumauswahlkomponente von Vue
  • Verwenden rekursiver Vue.js-Komponenten zum Implementieren eines einklappbaren Baummenüs (Demo)
  • Vue-Komponentenvorlagenformular zum Realisieren der Objektarray-Datenschleife in einer Baumstruktur (Beispielcode)
  • Rekursive Vue2-Komponente zur Implementierung eines Baummenüs
  • Rekursive Vue.js-Komponente zum Erstellen eines Baummenüs

<<:  Lösung des Konflikts zwischen Linux-Kernel- und SVN-Versionen

>>:  MySQL-Optimierungstipps: Analyse der Implementierungsmethoden zur Duplikatsentfernung [Millionen von Daten]

Artikel empfehlen

So testen Sie die maximale Anzahl von TCP-Verbindungen in Linux

Vorwort Es besteht ein Missverständnis bezüglich ...

Detaillierter Prozess der Bereitstellung von Docker für WSL2 in IDEA

Die lokale Umgebung ist Windows 10 + WSL2 (Ubuntu...

HTML-Tutorial: Titelattribut und Alt-Attribut

XHTML ist die Grundlage des CSS-Layouts. jb51.net...

So löschen Sie Tabellendaten in MySQL

Es gibt zwei Möglichkeiten, Daten in MySQL zu lös...

Codebeispiel für die Implementierung des Linux-Verzeichniswechsels

Das Wechseln von Dateien ist eine gängige Operati...

Lösen Sie das Problem des MySQL-Datenverlusts, wenn Docker Redis neu startet

Amtliche Dokumentation: Daher sollte MySQL wie fo...

Karusselleffekte mit JavaScript implementieren

In diesem Artikel wird der spezifische Code für J...

JavaScript zum Erzielen eines Akkordeoneffekts

In diesem Artikel wird der spezifische Code für J...