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 1. Prototyp-Beziehung 2. Proto...
Vorwort Als ich zuvor zu einem Vorstellungsgesprä...
Die Tabellenüberschrift kann über oder unter der ...
Jede Webseite hat eine Adresse, die durch eine UR...
Die Attribute des <TR>-Tags werden verwende...
Ich habe vor Kurzem mit dem Studium der Datenbank...
Hier sind einige Punkte, die Sie bei der Registri...
MySQL Zeile zu Spalte, Spalte zu Zeile Der Satz i...
<Text> <div id="Wurzel"> &l...
Problembeschreibung Wie wir alle wissen, lautet d...
Hintergrund Kürzlich fragten mich einige Freunde,...
Wie unten dargestellt: Führen Sie hauptsächlich A...
Code kopieren Der Code lautet wie folgt: <ifra...
1. Übersicht über Inner Join-Abfragen Der Inner J...
Ich habe heute eine JSP-Seite geschrieben. Ich hab...