vue實(shí)現(xiàn)多級(jí)菜單效果
本文實(shí)例為大家分享了vue實(shí)現(xiàn)多級(jí)菜單效果的具體代碼,供大家參考,具體內(nèi)容如下
效果圖:
效果說(shuō)明:
點(diǎn)擊父菜單,如果有子菜單就在其左側(cè)顯示出子菜單
思路:
通過(guò)遞歸的方式。
代碼:
子組件 MenuItem
// 子組件代碼 <template> ? ? <li> ? ? ? ? <span @click="toggle(model)"> {{ isFolder? "<" + model.menuName : model.menuName ? }}</span> ? ? ? ? <ul v-if="isFolder" v-show="open" style="position: absolute;left: -120px;top: 0px; width:100px; background-color: cadetblue;"> ? ? ? ? ? ? <menuItems v-for="(item, index) in model.childTree" :model="item" :key="index"></menuItems> ? ? ? ? </ul> ? ? </li> </template> ? <script type="text/javascript"> ? ? export default { ? ? ? ? // 組件遞歸必要條件,name屬性,然后在標(biāo)簽就可以通過(guò)name直接使用自己 ? ? ? ? name: 'menuItems', ? ? ? ? props: ['model',], ? ? ? ? data() { ? ? ? ? ? ? return { ?? ??? ??? ??? ? // 控制子列表的顯示隱藏 ?? ??? ??? ??? ?open: false ?? ??? ??? ?} ? ? ? ? }, ? ? ? ? computed: { ? ? ? ? ? ? // 是否還有子列表需要渲染,作為v-if的判斷條件 ? ? ? ? ? ? isFolder() { ? ? ? ? ? ? ? ? return this.model.childTree && this.model.childTree.length ? ? ? ? ? ? } ? ? ? ? }, ? ? ? ? methods: { ? ? ? ? ? ? // 切換列表顯示隱藏的方法 ? ? ? ? ? ? toggle(mode) { ?? ??? ??? ??? ? ? ? ? ? ? ? ? ? if(this.isFolder) { ? ? ? ? ? ? ? ? ? ? this.open = !this.open ? ? ? ? ? ? ? ? } ?? ?/* ?? ??? ??? ?if(mode.id != undefined && this.open){ ?? ??? ??? ??? ??? ?this.open = false; ?? ??? ??? ??? ?} */ ? ? ? ? ? ? }, ? ? ? ? } ? ? } </script> <style scoped> ?? ?ul,li { ?? ??? ?list-style: none; ?? ?} </style>
父組件調(diào)用子組件
<template> ?? ?<!--http://www.dbjr.com.cn/css/378895.html--> ?? ?<view> ?? ??? ?<div style="position: absolute;left:400px;"> ?? ??? ??? ?<ul> ?? ??? ??? ??? ?<menu-item v-for="(model, index) in list" :model="model" :key="index"></menu-item> ?? ??? ??? ?</ul> ?? ??? ?</div> ?? ?</view> ?? ? </template> ? <script> ?? ?import MenuItem from "../../components/MenuItem.vue" ?? ?export default { ?? ??? ?components:{ ?? ??? ??? ?MenuItem ?? ??? ?}, ?? ??? ?computed:{ ?? ??? ??? ? ?? ??? ?}, ?? ??? ?data() { ?? ??? ??? ?return { ?? ??? ??? ??? ?list: [ // 將菜單數(shù)據(jù)傳到菜單組件中就行了 ?? ??? ??? ??? ?{ ?? ??? ??? ??? ? ? ?"id": "1", ?? ??? ??? ??? ? ? ?"menuName": "菜單1", ?? ??? ??? ??? ? ? ?"childTree": [{ ?? ??? ??? ??? ? ? ? ? ?"menuName": "項(xiàng)目進(jìn)度", ?? ??? ??? ??? ? ? ? ? ?"childTree": [{ ?? ??? ??? ??? ? ? ? ? ? ? ?"menuName": "項(xiàng)目一", ?? ??? ??? ??? ? ? ? ? ? ? ?"childTree": [{ "menuName": "詳細(xì)信息" }] ?? ??? ??? ??? ? ? ? ? ?}] ?? ??? ??? ??? ? ? ?}, { ?? ??? ??? ??? ? ? ? ? ?"menuName": "任務(wù)安排" ?? ??? ??? ??? ? ? ?}] ?? ??? ??? ??? ?},? ?? ??? ??? ??? ?{ ?? ??? ??? ??? ? ? ?"id": "2", ?? ??? ??? ??? ? ? ?"menuName": "菜單2" ?? ??? ??? ??? ?},? ?? ??? ??? ??? ?{ ?? ??? ??? ??? ? ? ?"id": "3", ?? ??? ??? ??? ? ? ?"menuName": "菜單3" ?? ??? ??? ??? ?}] ?? ??? ??? ?}; ?? ??? ?}, ?? ??? ?methods:{ ?? ??? ?} ?? ?} </script> ? <style>?? ? ?? ?ul,li{ ?? ?list-style: none !important; ? ? ?} </style>
結(jié)語(yǔ):
效果圖中是將子菜單顯示在父菜單的左側(cè),也可以直接通過(guò)把下面的樣式刪除,讓子菜單顯示子父菜單的右側(cè)
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- vue遞歸組件實(shí)現(xiàn)elementUI多級(jí)菜單
- jdk1.8+vue elementui實(shí)現(xiàn)多級(jí)菜單功能
- vue+ java 實(shí)現(xiàn)多級(jí)菜單遞歸效果
- springboot + vue 實(shí)現(xiàn)遞歸生成多級(jí)菜單(實(shí)例代碼)
- vue實(shí)現(xiàn)多級(jí)菜單效果
- Vue 遞歸多級(jí)菜單的實(shí)例代碼
- 詳解VUE Element-UI多級(jí)菜單動(dòng)態(tài)渲染的組件
- vue+quasar使用遞歸實(shí)現(xiàn)動(dòng)態(tài)多級(jí)菜單
相關(guān)文章
利用vue實(shí)現(xiàn)打印頁(yè)面的幾種方法總結(jié)
在項(xiàng)目里有個(gè)打印功能,將頁(yè)面的部分內(nèi)容打印出來(lái),所以下面這篇文章主要給大家介紹了關(guān)于利用vue實(shí)現(xiàn)打印頁(yè)面的幾種方法,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-11-11一看就會(huì)的vuex實(shí)現(xiàn)登錄驗(yàn)證(附案例)
這篇文章主要介紹了一看就會(huì)的vuex實(shí)現(xiàn)登錄驗(yàn)證(附案例),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01利用vue+elementUI實(shí)現(xiàn)部分引入組件的方法詳解
這篇文章主要給大家介紹了關(guān)于利用vue+elementUI實(shí)現(xiàn)部分引入組件的相關(guān)資料,以及介紹了vue引入elementUI報(bào)錯(cuò)的解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2017-11-11vue npm install 安裝某個(gè)指定的版本操作
這篇文章主要介紹了vue npm install 安裝某個(gè)指定的版本操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-08-08vue項(xiàng)目展示pdf文件的方法實(shí)現(xiàn)
本文主要介紹了vue項(xiàng)目展示pdf文件的方法實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07Elemenu中el-table中使用el-popover選中關(guān)閉無(wú)效解決辦法(最新推薦)
這篇文章主要介紹了Elemenu中el-table中使用el-popover選中關(guān)閉無(wú)效解決辦法(最新推薦),因?yàn)樵趀l-table-column里,因?yàn)槭嵌嘈?使用trigger="manual"?時(shí),用v-model="visible"來(lái)控制時(shí),控件找不到這個(gè)值,才換成trigger="click",需要的朋友可以參考下2024-03-03vue-echarts如何實(shí)現(xiàn)圖表組件封裝詳解
由于在項(xiàng)目中需要對(duì)數(shù)據(jù)進(jìn)行可視化處理,也就是用圖表展示,所以下面這篇文章主要給大家介紹了關(guān)于vue-echarts如何實(shí)現(xiàn)圖表組件封裝的相關(guān)資料,需要的朋友可以參考下2022-05-05