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
Inhaltsverzeichnis Hintergrund Wirkung Ideen Hint...
Dieser Artikel fasst die Implementierungsmethoden...
Die Rancher-Bereitstellung kann über drei Archite...
Inhaltsverzeichnis 1. Übersicht 1.1 Was ist ein P...
Da die Verwendung von group by in MySQL immer zu ...
Inhaltsverzeichnis forEach() Methode So springen ...
Inhaltsverzeichnis 1. Technischer Überblick 2. Te...
Inhaltsverzeichnis benutzerdefinierte Vue-Direkti...
Innodb umfasst die folgenden Komponenten 1. innod...
Überblick binlog2sql ist ein in Python entwickelt...
Wie debuggt man eine Seite auf dem iPad? Wenn Sie ...
Im Allgemeinen muss, nachdem sich auf der linken ...
1. Scroll-Ansicht Beim vertikalen Scrollen müssen...
In vertikaler Richtung können Sie die Zeilenausri...
Legen Sie das Hintergrundbild für die Tabellenübe...