vue遞歸實(shí)現(xiàn)三級(jí)菜單
本文實(shí)例為大家分享了vue遞歸實(shí)現(xiàn)三級(jí)菜單的具體代碼,供大家參考,具體內(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)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- vue+element使用動(dòng)態(tài)加載路由方式實(shí)現(xiàn)三級(jí)菜單頁面顯示的操作
- vue.js實(shí)現(xiàn)三級(jí)菜單效果
- vue實(shí)現(xiàn)后臺(tái)管理權(quán)限系統(tǒng)及頂欄三級(jí)菜單顯示功能
- Vue iview-admin框架二級(jí)菜單改為三級(jí)菜單的方法
- vue+iview的菜單與頁簽的聯(lián)動(dòng)方式
- Vue實(shí)現(xiàn)左右菜單聯(lián)動(dòng)實(shí)現(xiàn)代碼
- vue基于mint-ui實(shí)現(xiàn)城市選擇三級(jí)聯(lián)動(dòng)
- 詳解Vue、element-ui、axios實(shí)現(xiàn)省市區(qū)三級(jí)聯(lián)動(dòng)
- vue + elementUI實(shí)現(xiàn)省市縣三級(jí)聯(lián)動(dòng)的方法示例
- vue實(shí)現(xiàn)三級(jí)聯(lián)動(dòng)動(dòng)態(tài)菜單
相關(guān)文章
Vue el-autocomplete遠(yuǎn)程搜索下拉框并實(shí)現(xiàn)自動(dòng)填充功能(推薦)
在elementui Input輸入框中可以找到遠(yuǎn)程搜索組件,獲取服務(wù)端的數(shù)據(jù)。這篇文章主要給大家介紹Vue el-autocomplete遠(yuǎn)程搜索下拉框并實(shí)現(xiàn)自動(dòng)填充功能,感興趣的朋友一起看看吧2019-10-10
Vue實(shí)現(xiàn)一個(gè)動(dòng)態(tài)添加行的表格步驟詳解
在Vue組件中定義表格的數(shù)據(jù)模型,通常使用一個(gè)數(shù)組來存儲(chǔ)表格的數(shù)據(jù),每一行數(shù)據(jù)可以是一個(gè)對(duì)象,對(duì)象的屬性對(duì)應(yīng)表格的列,這篇文章主要介紹了Vue實(shí)現(xiàn)一個(gè)動(dòng)態(tài)添加行的表格步驟詳解,需要的朋友可以參考下2024-05-05
如何利用vue實(shí)現(xiàn)css過渡和動(dòng)畫
過渡Vue在插入、更新或者移除 DOM 時(shí),提供多種不同方式的應(yīng)用過渡效果這篇文章主要給大家介紹了關(guān)于如何利用vue實(shí)現(xiàn)css過渡和動(dòng)畫的相關(guān)資料,需要的朋友可以參考下2021-11-11
vue使用keep-alive無效以及include和exclude用法解讀
這篇文章主要介紹了vue使用keep-alive無效以及include和exclude用法解讀,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07
解讀計(jì)算屬性和watch監(jiān)聽的區(qū)別及說明
計(jì)算屬性是基于它們的依賴進(jìn)行緩存的,只有在它的相關(guān)依賴發(fā)生改變時(shí)才會(huì)重新求值,而watch則是一個(gè)更為通用的監(jiān)聽器,它可以在數(shù)據(jù)變化時(shí)執(zhí)行異步操作或開銷較大的操作2025-01-01
Vant?Weapp組件picker選擇器初始默認(rèn)選中問題
這篇文章主要介紹了Vant?Weapp組件picker選擇器初始默認(rèn)選中問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-01-01
通過實(shí)例解析vuejs如何實(shí)現(xiàn)調(diào)試代碼
這篇文章主要介紹了通過實(shí)例解析vuejs如何實(shí)現(xiàn)調(diào)試代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07

