Heim > Artikel > Web-Frontend > vue.js+element-ui erstellt eine Menübaumstruktur
Dieses Mal bringe ich Ihnen vue.js+element-ui, um eine Menübaumstruktur zu erstellen. Was sind die Vorsichtsmaßnahmen zum Erstellen einer Menübaumstruktur mit vue.js+element-ui? Hier ist ein praktischer Fall einmal einen Blick.
Aus geschäftlichen Gründen ist es erforderlich, ein Baummenü zu implementieren, und die Menüdaten werden aus dem Hintergrund zurückgegeben. Ich habe ein paar Artikel im Internet gefunden und schließlich eine Lösung gefunden.
Szenario: Gemäß den Geschäftsanforderungen ist es erforderlich, ein aktives Baummenü zu implementieren. Die Menüdaten werden wie folgt zurückgegeben:
Vom Hintergrund zurückgegeben Das Datenformat ist wie folgt:
data=[{ pID:'1',//父ID name:'目录一', menuID:'m1',//本身ID isContent:false//判断是否是目录 }, { pID:'1', name:'目录二', menuID:'m2', isContent:false }, { pID:'m1', name:'目录一--菜单一', menuID:'m11', isContent:true }, { pID:'m1', name:'目录一--目录一', menuID:'m12', isContent:false }, { pID:'m12', name:'目录一--目录一--菜单一', menuID:'m121', isContent:true }, { pID:'m2', name:'目录二--菜单一', menuID:'m21', isContent:true }, { pID:'m2', name:'目录二--菜单二', menuID:'m22', isContent:true }, ]
Dies ist eine Datenzeichenfolge mit einer Eltern-Kind-Beziehung. Der erste Schritt besteht darin, diese große Datenzeichenfolge in eine Baumstruktur umzuwandeln :
tree(){ let data=[{ pID:'1',//父ID name:'目录一', menuID:'m1',//本身ID isContent:false//判断是否是目录 }, { pID:'1', name:'目录二', menuID:'m2', isContent:false }, { pID:'m1', name:'目录一--菜单一', menuID:'m11', isContent:true }, { pID:'m1', name:'目录一--目录一', menuID:'m12', isContent:false }, { pID:'m12', name:'目录一--目录一--菜单一', menuID:'m121', isContent:true }, { pID:'m2', name:'目录二--菜单一', menuID:'m21', isContent:true }, { pID:'m2', name:'目录二--菜单二', menuID:'m22', isContent:true }, ] let tree = [] for(let i=0;i<data.length;i++){ if(data[i].pID == '1'){ let obj = data[i] obj.list = [] tree.push(obj) data.splice(i,1) i-- } } menuList(tree) console.log(tree) function menuList(arr){ if(data.length !=0){ for(let i=0; i<arr.length;i++){ for(let j=0;j<data.length;j++){ if(data[j].pID == arr[i].menuID){ let obj = data[j] obj.list = [] arr[i].list.push(obj) data.splice(j,1) j-- } } menuList(arr[i].list) } } } }
Wird nach dem Ausführen zurückgegeben. Die Struktur sieht folgendermaßen aus:
[{"pID":"1","name":"目录一","menuID":"m1","isContent":false,"list":[{"pID":"m1","name":"目录一--菜单一","menuID":"m11","isContent":true,"list":[]},{"pID":"m1","name":"目录一--目录一","menuID":"m12","isContent":false,"list":[{"pID":"m12","name":"目录一--目录一--菜单一","menuID":"m121","isContent":true,"list":[]}]}]},{"pID":"1","name":"目录二","menuID":"m2","isContent":false,"list":[{"pID":"m2","name":"目录二--菜单一","menuID":"m21","isContent":true,"list":[]},{"pID":"m2","name":"目录二--菜单二","menuID":"m22","isContent":true,"list":[]}]}]
Als Nächstes zeigen wir die im Projekt verwendete Element-UI-Navigationsmenükomponente, um eine solche Baumstruktur zu erreichen. Jede Ebene des Menüs wird als separate Komponente verwendet, indem der Wert von isContent beurteilt wird. Ich habe den Code direkt gepostet
<el-menu theme="dark" :default-active="openMenuID" :default-openeds="openMenuArr" class="el-menu" @select="handleSelect"> <template v-for="(item,index) in menuList"> <el-submenu :index=item.menuID v-if="item.IsContent"> <template slot="title"> <i class="el-icon-menu"></i> {{item.name}} </template> <tree-menu :data="item.list"></tree-menu> </el-submenu> <el-menu-item :index=item.menuID v-else>{{item.name}}</el-menu-item> </template> </el-menu>
Der Code der Baummenükomponente:
<template v-for="(menu,index) in data"> <el-submenu :index=menu.menuID v-if="menu.IsContent"> <template slot="title"> <i class="el-icon-plus"></i> {{menu.name}}</template> <tree-menu :data="menu.list"></tree-menu> </el-submenu> <el-menu-item v-else :index=menu.menuID> {{menu.name}} </el-menu-item> </template>
Ich glaube, Sie haben die Methode beherrscht, nachdem Sie den Fall in diesem Artikel gelesen haben. Für weitere spannende Informationen zahlen Sie bitte Beachten Sie auch andere verwandte Artikel auf der chinesischen PHP-Website!
Empfohlene Lektüre:
WeChat-Applet ermöglicht die Bestellfunktion für Menüs zum Mitnehmen
security.js+RSA-Verschlüsselungsfunktion
Das obige ist der detaillierte Inhalt vonvue.js+element-ui erstellt eine Menübaumstruktur. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!