In diesem Artikelbeispiel wird der spezifische Code der Vue-Entwicklungsbaumstrukturkomponenten zu Ihrer Information geteilt. Der spezifische Inhalt ist wie folgt brauchenAuf 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. Wirkungerreichen<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:
|
<<: Lösung des Konflikts zwischen Linux-Kernel- und SVN-Versionen
Softwareversion Windows: Windows 10 MySQL: mysql-...
Inhaltsverzeichnis Jenkins-Installation Installie...
Vorwort Es besteht ein Missverständnis bezüglich ...
Die lokale Umgebung ist Windows 10 + WSL2 (Ubuntu...
XHTML ist die Grundlage des CSS-Layouts. jb51.net...
Es gibt zwei Möglichkeiten, Daten in MySQL zu lös...
Es handelt sich dabei ausschließlich um Webseiten...
Das Wechseln von Dateien ist eine gängige Operati...
Amtliche Dokumentation: Daher sollte MySQL wie fo...
Inhaltsverzeichnis Vue3-Kapselungsnachrichten-Ein...
Vor ein paar Tagen habe ich auf Codepen ein Beisp...
In diesem Artikel wird der spezifische Code für J...
In diesem Artikel wird der spezifische Code für J...
Dieses Axios-Paket wird in der Vue3-Demo verwende...
Heute ist mir ein Problem aufgefallen: Der Inhalt ...