vue遞歸實(shí)現(xiàn)三級菜單
本文實(shí)例為大家分享了vue遞歸實(shí)現(xiàn)三級菜單的具體代碼,供大家參考,具體內(nèi)容如下
父組件
<template>
<div class="menu-level-menu menu-level-menu-enter" v-if="showLevelMenu">
<menu-item class="menu-item" :menuDate="menuList"></menu-item>
</div>
</template>
子組件
<template>
<div>
<div class="" v-for="(menu, index) in menuDate" :key="index">
// 每一個(gè)菜單項(xiàng)
<div class="menu-row" @click="menuSpread(menu)"
:class="[{'menu-row-selected': menu.selected && menu.children.length <= 0}]">
<div class="menu-row-left">
<div class="menu-row-left-line" :class="[{'menu-selected': menu.selected && menu.children.length <= 0}]"></div>
<i class="iconfont" :class="[menu.menuIcon, {'color-icon': showIconColor(menu)}]"></i>
</div>
<div class="menu-row-right">
<span :class="[{'font-16': menu.level === '0'}]">{{menu.menuName}}</span>
<i class="c" v-if="menu.children.length <= 0"></i>
<i class="iconfont icon-liebiaoxiala" v-if="menu.children.length>0 && !menu.selected"></i>
<i class="iconfont icon-liebiaoshouqi" v-if="menu.children.length>0 && menu.selected"></i>
</div>
</div>
// 遞歸展示菜單
<menu-item v-show="menu.selected" v-if="menu.children.length>0" :menuDate="menu.children"></menu-item>
</div>
</div>
</template>
<script>
export default {
props: {
menuDate: Array
},
name: 'MenuItem',
methods: {
menuSpread (menu) {
if (menu.menuRouter) this.$router.push(menu.menuRouter);
menu.selected = !menu.selected;
this.recursion(this.menuDate, menu);
},
recursion (all, temp) {
all.forEach(item => {
if (item.menuName !== temp.menuName) {
item.selected = false;
this.recursion(item.children, temp);
}
});
},
showIconColor (menu) {
let show = false;
if (menu.level === '0') {
menu.children.forEach(item => {
if (item.children.length <= 0 && item.selected) {
show = true;
}
if (item.children.length > 0) {
item.children.forEach(item => {
if (item.selected) {
show = true;
}
});
}
});
}
return show;
}
}
};
</script>
效果圖

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- vue+element使用動(dòng)態(tài)加載路由方式實(shí)現(xiàn)三級菜單頁面顯示的操作
- vue.js實(shí)現(xiàn)三級菜單效果
- vue實(shí)現(xiàn)后臺管理權(quán)限系統(tǒng)及頂欄三級菜單顯示功能
- Vue iview-admin框架二級菜單改為三級菜單的方法
- vue+iview的菜單與頁簽的聯(lián)動(dòng)方式
- Vue實(shí)現(xiàn)左右菜單聯(lián)動(dòng)實(shí)現(xiàn)代碼
- vue基于mint-ui實(shí)現(xiàn)城市選擇三級聯(lián)動(dòng)
- 詳解Vue、element-ui、axios實(shí)現(xiàn)省市區(qū)三級聯(lián)動(dòng)
- vue + elementUI實(shí)現(xiàn)省市縣三級聯(lián)動(dòng)的方法示例
- vue實(shí)現(xiàn)三級聯(lián)動(dòng)動(dòng)態(tài)菜單
相關(guān)文章
vue輪播組件實(shí)現(xiàn)$children和$parent 附帶好用的gif錄制工具
這篇文章主要介紹了vue輪播組件實(shí)現(xiàn),$children和$parent,附帶好用的gif錄制工具,需要的朋友可以參考下2019-09-09
在vue中獲取token,并將token寫進(jìn)header的方法
今天小編就為大家分享一篇在vue中獲取token,并將token寫進(jìn)header的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-09-09
vue中全局路由守衛(wèi)中替代this操作(this.$store/this.$vux)
這篇文章主要介紹了vue中全局路由守衛(wèi)中替代this操作(this.$store/this.$vux),具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-07-07
前端vue中el-table增加合計(jì)行及合并單元格代碼示例
在有些情況下我們會(huì)有合并表頭、合并列、合并尾部合計(jì)的需求,這篇文章主要給大家介紹了關(guān)于前端vue中el-table增加合計(jì)行及合并單元格的相關(guān)資料,需要的朋友可以參考下2023-09-09
在 Vue-CLI 中引入 simple-mock實(shí)現(xiàn)簡易的 API Mock 接口數(shù)據(jù)模擬
本文以 Vue-CLI 為例介紹引入 simple-mock 實(shí)現(xiàn)前端開發(fā)數(shù)據(jù)模擬的步驟。感興趣的朋友跟隨小編一起看看吧2018-11-11
默認(rèn)瀏覽器設(shè)置及vue自動(dòng)打開頁面的方法
今天小編就為大家分享一篇默認(rèn)瀏覽器設(shè)置及vue自動(dòng)打開頁面的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-09-09
解析Vue2 dist 目錄下各個(gè)文件的區(qū)別
本篇文章主要介紹了解析Vue2 dist 目錄下各個(gè)文件的區(qū)別,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-11-11
vue實(shí)現(xiàn)動(dòng)態(tài)路由的方法及路由原理解析
這篇文章主要介紹了路由原理及vue實(shí)現(xiàn)動(dòng)態(tài)路由,Vue Router 提供了豐富的 API,可以輕松地實(shí)現(xiàn)路由功能,并支持路由參數(shù)、查詢參數(shù)、命名路由、嵌套路由等功能,可以滿足不同應(yīng)用程序的需求,需要的朋友可以參考下2023-06-06

