


So implementieren Sie eine rekursive Baummenükomponente in VueJS (ausführliches Tutorial)
Dieser Artikel stellt hauptsächlich die Implementierung der rekursiven Baummenükomponente in vuejs vor. Jetzt teile ich ihn mit Ihnen und gebe ihn als Referenz.
Vorwort
Vor einiger Zeit habe ich Vue verwendet, um ein Backend-Managementsystem zu erstellen, in dem rekursive Komponenten am häufigsten verwendet wurden, und weil ich mit dem Beamten nicht vertraut war Ich bin darauf gestoßen und bin auf viele Fallstricke gestoßen, also habe ich sie aufgeschrieben und heute mit allen geteilt.
Rekursive Komponenten
Eine Komponente kann sich innerhalb ihrer Vorlage nur dann rekursiv aufrufen, wenn sie über die Namensoption verfügt. Dieser Satz auf der offiziellen Website besagt, dass die Schlüsseldefinitionskomponente ein Namensattribut haben muss.
Das Simulationsdatenformat ist wie folgt:
[ { "id": "1", "menuName": "基础管理", "menuCode": "10", "children": [ { "menuName": "用户管理", "menuCode": "11" }, { "menuName": "角色管理", "menuCode": "12", "children": [ { "menuName": "管理员", "menuCode": "121" }, { "menuName": "CEO", "menuCode": "122" }, { "menuName": "CFO", "menuCode": "123" }, { "menuName": "COO", "menuCode": "124" }, { "menuName": "普通人", "menuCode": "124" } ] }, { "menuName": "权限管理", "menuCode": "13" } ] }, { "id": "2", "menuName": "商品管理", "menuCode": "" }, { "id": "3", "menuName": "订单管理", "menuCode": "30", "children": [ { "menuName": "订单列表", "menuCode": "31" }, { "menuName": "退货列表", "menuCode": "32", "children": [] } ] }, { "id": "4", "menuName": "商家管理", "menuCode": "", "children": [] } ]
html Unsere Idee ist, li in ul zu setzen, unendlich ul setzt li und der Titel wird mit einem p-Element umschlossen,
<template> <li> <span @click="toggle"> <!-- toggle:点击关闭展开 --> <i v-if="isFolder" class="icon" :class="[open ? 'folder-open' : 'folder']" @cilck="toggle"></i> <!-- <i v-if="isFolder" class="icon " :class="[open ? 'folder-open' : 'folder']"></i> --> <i v-if="!isFolder" class="icon folder-text"></i> {{model.menuName}} </span> <ul v-show="open" v-if="isFolder"> <treeMenu v-for="item in model.children" :model="item"></treeMenu> </ul> </li> </template>
Im offiziellen Dokument geschrieben. Rekursive Komponenten betonen die Verwendung des Namensattributs
Es ist zu beachten, dass die von der übergeordneten Komponente übergebenen Daten zuerst tief kopiert werden müssen
Tiefenkopie: Requisiten zuweisen zu den Daten und weisen Sie gleichzeitig Werte zu. Erstellen Sie eine tiefe Kopie, JSON.parse(JSON.stringify(this value is enough)) in den Daten, benennen Sie den Datenwert selbst
export default { name: 'treeMenu', //props: ['model'], //这样和下面效果一样 props: { model: { type: Object }, }, components: {}, }
Laut Idee von vue: Ohne den Dom-Baum zu bedienen, definieren wir zwei Variablen, eine für die Anzeige, das Untermenü ausblenden (öffnen) und das Symbol ändern, um das Untermenü zu speichern (isFolder).
data() { return { open: false, //一个显示隐藏子菜单(open) //isFolder: true //这个不要写死,运用计算属性计算看存不存在 } },
Verwenden Sie von Vue berechnete Attribute, um den Wert von isFolder dynamisch zu ändern, das Symbol zu ändern und zu bestimmen, ob untergeordnete Elemente vorhanden sind und wie lang die untergeordneten Elemente sind.
computed: { isFolder() { //利用vue计算属性动态改变isFolder的值,修改图标,判断存在不子级和子级长度 // return this.model.children && this.model.children.length //和下面效果一样 let isFolder = false if (this.model.children && this.model.children.length) { isFolder = true; } else { isFolder = false; } return isFolder } },
Versteckte Ereignisse anzeigen
methods: { toggle() { if (this.isFolder) { this.open = !this.open } } },
Wir haben hier geschrieben: „Ich habe ein Baummenü erstellt“
Das Obige habe ich für alle zusammengestellt. Ich hoffe, dass es in Zukunft für alle hilfreich sein wird.
Verwandte Artikel:
Ausführliche Antwort: Welche Auswirkungen haben Änderungen in Vue auf Komponenten?
So implementieren Sie ein Lotteriesystem mit JavaScript
Probleme im Zusammenhang mit der Wertübergabe in Laui
So erstellen Sie helloWorld mit vue-cli in vue
Das obige ist der detaillierte Inhalt vonSo implementieren Sie eine rekursive Baummenükomponente in VueJS (ausführliches Tutorial). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Vue.js eignet sich für kleine und mittelgroße Projekte und schnelle Iterationen, während React für große und komplexe Anwendungen geeignet ist. 1) Vue.js ist einfach zu bedienen und für Situationen geeignet, in denen das Team nicht ausreicht oder die Projektskala klein ist. 2) React hat ein reichhaltigeres Ökosystem und eignet sich für Projekte mit hoher Leistung und komplexen funktionalen Bedürfnissen.

Sie können der VUE -Taste eine Funktion hinzufügen, indem Sie die Taste in der HTML -Vorlage an eine Methode binden. Definieren Sie die Methode und schreiben Sie die Funktionslogik in der VUE -Instanz.

Die Verwendung von Bootstrap in Vue.js ist in fünf Schritte unterteilt: Startstrap installieren. Bootstrap in main.js. Verwenden Sie die Bootstrap -Komponente direkt in der Vorlage. Optional: benutzerdefinierter Stil. Optional: Verwenden Sie Plug-Ins.

Es gibt drei Möglichkeiten, sich auf JS -Dateien in Vue.js zu beziehen: Geben Sie den Pfad direkt mit dem & lt; Skript & gt an. Etikett;; Dynamischer Import mit dem montierten () Lebenszyklushaken; und importieren über die Vuex State Management Library.

Mit der Watch -Option in Vue.js können Entwickler auf Änderungen in bestimmten Daten anhören. Wenn sich die Daten ändert, löst sich eine Rückruffunktion aus, um Aktualisierungsansichten oder andere Aufgaben auszuführen. Zu den Konfigurationsoptionen gehören unmittelbar, die festlegen, ob ein Rückruf sofort ausgeführt werden soll, und Deep, das feststellt, ob Änderungen an Objekten oder Arrays rekursiv anhören sollen.

VUE Multi-Page-Entwicklung ist eine Möglichkeit, Anwendungen mithilfe des Vue.js-Frameworks zu erstellen, in dem die Anwendung in separate Seiten unterteilt ist: Code-Wartung: Die Aufteilung der Anwendung in mehrere Seiten kann das Verwalten und Wartungsbereich erleichtern. Modularität: Jede Seite kann als separates Modul für eine einfache Wiederverwendung und den Austausch verwendet werden. Einfaches Routing: Die Navigation zwischen Seiten kann durch einfache Routing -Konfiguration verwaltet werden. SEO -Optimierung: Jede Seite hat eine eigene URL, die SEO hilft.

VUE.JS hat vier Methoden, um zur vorherigen Seite zurückzukehren: $ router.go (-1) $ router.back () verwendet & lt; Router-Link to = & quot;/& quot; Komponentenfenster.history.back () und die Methodenauswahl hängt von der Szene ab.

Sie können die Vue -Version mit Vue Devtools abfragen, um die Registerkarte VUE in der Konsole des Browsers anzuzeigen. Verwenden Sie NPM, um den Befehl "npm list -g vue" auszuführen. Suchen Sie das Vue -Element im Objekt "Abhängigkeiten" der Datei package.json. Führen Sie für Vue -CLI -Projekte den Befehl "Vue --version" aus. Überprüfen Sie die Versionsinformationen im & lt; Skript & gt; Tag in der HTML -Datei, die sich auf die VUE -Datei bezieht.
