日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > vue >内容正文

vue

html 左侧 树形菜单,vue左侧菜单,树形图递归实现代码

發(fā)布時間:2025/3/8 vue 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 html 左侧 树形菜单,vue左侧菜单,树形图递归实现代码 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

學(xué)習(xí)vue有一段時間了,最近使用vue做了一套后臺管理系統(tǒng),左側(cè)菜單需求是這樣的,可以多層,數(shù)據(jù)由后臺傳遞。也因?yàn)樽约簩俜轿臋n的不熟悉使得自己踩了不少坑,今天寫出來和大家一起分享。

效果圖如下所示:

先說說遇到的坑,由于是子父組件,當(dāng)時傳遞使用的是子父組件的傳遞,但是這時候只能獲取到第一層的數(shù)據(jù),第二層往后獲取不到數(shù)據(jù),踩了一下午坑以后才知道,子組件使用了遞歸組件,這時候他已經(jīng)不能往父組件傳遞了,子傳父,只能逐層傳遞這時候已經(jīng)隔層了,所以我使用了非子父組件傳遞,兩個頁面都引入bus.js,這里不懂的請百度。

bus.js

import Vue from 'vue'

export default new Vue

父組件內(nèi)容

模擬后臺數(shù)據(jù)

theModel:[{

'id': '1',

'menuName': '導(dǎo)航1',

'menuCode': '10',

'menuUrl':'',

'childMenus': [

{

'menuName': '用戶管理',

'menuCode': '11',

'menuUrl':'/home',

'menuPath':'',

'childMenus':[{

'menuName': '11111',

'menuCode': '12',

'menuUrl':'/systemjuri',

'menuPath':'',

'childMenus': []

}]

},

{

'menuName': '角色管理',

'menuCode': '12',

'menuUrl':'/systemjuri',

'menuPath':'',

'childMenus': []

},

{

'menuName': '菜單管理',

'menuUrl':'/systemmenu',

'menuCode': '13',

'menuPath':'http://10.63.195.214:8080/menuManage/html/index_3.html',

'childMenus':[]

}]

},{

'id': '1',

'menuName': '導(dǎo)航2',

'menuCode': '10',

'childMenus':[]

}],

父組件引入子組件

import myTree from './treeMenu.vue'

export default {

components: {

myTree

},

}

父組件接受子組件傳遞的數(shù)據(jù)

bus.$on("childEvent", function(transmit) {})

下面是子組件內(nèi)容,子組件名稱treeMenu,name: 'treeMenu',

{{ model.menuName }}

import bus from "./../../../static/js/bus";

export default {

name: 'treeMenu',

props: ['model'],

data() {

return {

open: false,

}

},

computed: {

isFolder() {

return this.model.childMenus && this.model.childMenus.length

}

},

methods: {

toggle(msg,menuUrl,menuPath) {

if (this.isFolder) {

this.open = !this.open

}

var json = { msg: msg, menuUrl: menuUrl,menuPath:menuPath };

bus.$emit("childEvent", json)

},

}

}

ul {

list-style: none;

}

i.icon {

display: inline-block;

width: 15px;

height: 15px;

background-repeat: no-repeat;

vertical-align: middle;

float: right;

margin-top: 17px;

margin-right:30px;

}

.icon.folder {

background-image: url('./homeimg/left_1.png');

}

.icon.folder-open {

background-image: url('./homeimg/dowm_1.png');

}

.icon.file-text {

}

ul li ul li .icon.folder {

background-image: url('./homeimg/left_2.png');

}

ul li ul li .icon.folder-open {

background-image: url('./homeimg/down_2.png');

}

.tree-menu li {

line-height: 50px;

}

span{

display: block;

width: 100%;

height: 100%;

}

ul{

padding-left:10px;

}

ul li span{

text-indent: 10px;

}

ul li ul{

background:#ebf1f8;

color:#1457a7;

}

li:hover{

cursor:pointer;

}

由于用了遞歸組件所以name需要和對應(yīng)起來

總結(jié)

以上所述是小編給大家介紹的vue左側(cè)菜單,樹形圖遞歸實(shí)現(xiàn)代碼,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

總結(jié)

以上是生活随笔為你收集整理的html 左侧 树形菜单,vue左侧菜单,树形图递归实现代码的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。