使用vue+element-ui实现无限级动态菜单

该案例实现主要使用递归的思想,递归对新人来容易迷惑的是自己调用自己,直到满足条件为止,接下来我们就一步一步实现一个动态多级菜单vue组件

  1. 搭建项目并安装element-ui

    npm i -g vue-cli
    vue init webpack myproject-name
    cd myproject-name/
    npm install
    npm i element-ui -S

    不是本文重点 自行查看element-ui官网

  2. 在main.js中引入element-ui

    import Vue from 'vue'
    import ElementUI from 'element-ui'
    import 'element-ui/lib/theme-chalk/index.css'
    import App from './App.vue' Vue.use(ElementUI) new Vue({
    el: '#app',
    render: h => h(App)
    })
  3. 编写菜单树组件 menutree

    <template>
    <div class="menutree">
    <label v-for="menu in data" :key="menu.index">
    <el-submenu :index="menu.index" v-if="menu.children">
    <template slot="title">
    <span>{{menu.name}}</span>
    </template>
    <label>
    <menutree :data="menu.children"></menutree>
    </label>
    </el-submenu>
    <el-menu-item v-else :index="menu.index">
    <span slot="title">{{menu.name}}</span>
    </el-menu-item>
    </label>
    </div>
    </template>
    <script>
    import menutree from "@/views/home/menutree";
    export default {
    name: "menutree",
    data() {
    return {
    menu_data: {}
    };
    },
    components: {
    menutree: menutree
    },
    props: ["data"],
    };
    </script>

    代码分析

    for循环所有的菜单,如果没有子菜单则创建menuitem,否则创建submenu,并且把该子菜单作为数据重新for循环,直到没有子菜单,循环结束

  4. 设计菜单数据

    "menu_data": [{
    "index": "1",
    "name": "用户管理",
    "children": [{
    "index": "1-2",
    "name": "用户列表",
    "children": [{
    "index": "1-2-1",
    "name": "用户列表查询",
    "children": [{
    "index": "1-2-1-1",
    "name": "用户列表查询",
    "children": [{
    "index": "1-2-1-1-1",
    "name": "用户列表查询",
    "children": [{
    "index": "1-2-1-1-1-1",
    "name": "用户列表查询"
    }]
    }]
    }] }]
    }]
    }, {
    "index": "2",
    "name": "角色管理"
    }, {
    "index": "3",
    "name": "用户管理"
    }, {
    "index": "4",
    "name": "角色管理"
    }]
    }

    仅为测试数据

  5. 其他组件调用

    <template>
    <div class="left">
    <el-menu>
    <menutree :data="menu_data"></menutree>
    </el-menu>
    </div>
    </template>
    import menutree from "@/views/home/menutree";
    import { home } from "@/config/init.json";
    export default {
    components: {
    menutree: menutree
    },
    data() {
    return {
    menu_data: {}
    };
    },
    mounted() {
    this.menu_data = home.left.menu_data;
    }
    };
    </script>
  6. 实现效果

有任何疑问或建议欢迎留言

vue+element-ui实现无限级动态菜单树的更多相关文章

  1. vue + element ui 实现实现动态渲染表格

    前言:之前需要做一个页面,能够通过表名动态渲染出不同的表格,这里记录一下.转载请注明出处:https://www.cnblogs.com/yuxiaole/p/9786326.html 网站地址:我的 ...

  2. vue+element ui 的tab 动态增减,切换时提示用户是否切换

    前言:工作中用到 vue+element ui 的前端框架,动态添加 Tab,删除 Tab,切换 Tab 时提示用户是否切换等,发现 element ui  有一个 bug,这里记录一下如何实现.转载 ...

  3. 基于vue(element ui) + ssm + shiro 的权限框架

    zhcc 基于vue(element ui) + ssm + shiro 的权限框架 引言 心声 现在的Java世界,各种资源很丰富,不得不说,从分布式,服务化,orm,再到前端控制,权限等等玲琅满目 ...

  4. Vue&Element 前端应用开发之菜单和路由的关系

    我们一般的应用系统,菜单是很多功能界面的入口,菜单为了更好体现功能点的设置,一般都是动态从数据库生成的,而且还需要根据用户角色的不同,过滤掉部分没有权限的菜单:在Vue&Element的纯前端 ...

  5. 分享一个自搭的框架,使用Spring boot+Vue+Element UI

    废弃,新的:https://www.cnblogs.com/hackyo/p/10453243.html 特点:前后端分离,可遵循restful 框架:后端使用Spring boot,整合了aop.a ...

  6. Vue + Element UI 实现权限管理系统

    Vue + Element UI 实现权限管理系统 前端篇(一):搭建开发环境 https://www.cnblogs.com/xifengxiaoma/p/9533018.html

  7. vue + element ui 表格自定义表头,提供线上demo

    前言:工作中用到 vue+element ui 的前端框架,需要使用自定义表头,需要使用 re.转载请注明出处:https://www.cnblogs.com/yuxiaole/p/9710826.h ...

  8. vue+element ui 的上传文件使用组件

    前言:工作中用到 vue+element ui 的前端框架,使用到上传文件,则想着封装为组件,达到复用,可扩展.转载请注明出处:https://www.cnblogs.com/yuxiaole/p/9 ...

  9. vue+element ui 的表格列使用组件

    前言:工作中用到 vue+element ui 的前端框架,有这个场景:很多表格的列有许多一样的,所以考虑将列封装为组件.转载请注明出处:https://www.cnblogs.com/yuxiaol ...

随机推荐

  1. Java多线程系列 基础篇07 synchronized底层优化

    转载 http://www.cnblogs.com/paddix/ 作者:liuxiaopeng http://www.infoq.com/cn/articles/java-se-16-synchro ...

  2. BZOJ 3083 遥远的国度 树链剖分+线段树

    有换根的树链剖分的裸题. 在换根的时候注意讨论. 注意数据范围要开unsigned int或longlong #include<iostream> #include<cstdio&g ...

  3. PYTHON 爬虫笔记九:利用Ajax+正则表达式+BeautifulSoup爬取今日头条街拍图集(实战项目二)

    利用Ajax+正则表达式+BeautifulSoup爬取今日头条街拍图集 目标站点分析 今日头条这类的网站制作,从数据形式,CSS样式都是通过数据接口的样式来决定的,所以它的抓取方法和其他网页的抓取方 ...

  4. 常见的25个python面试问答

    常见的25个python面试问答 说到好用简洁的大数据技术,除了Hadoop.R等等,Python也是其中熠熠生辉的一员,因而广受企业和商家的青睐.求职季,不少应聘者在面试相关职业时都被要求掌握Pyt ...

  5. IDT 信息设计工具使用

    IDT 大多使用于接外系统数据,也就是非SAP 系统数据库.虽然SAP BW 里有数仓概念,接外部系统的视图.集中在使用建模,query ,再通过BO来展示.可是有些我们需要直连数据库,取一两张表相对 ...

  6. 疑难杂症:SQLServerAgent 当前未运行,因此无法将此操作通知它。

    日志信息:SQLServerAgent 当前未运行,因此无法将此操作通知它. (Microsoft SQL Server,错误: 22022) 确认问题之后,远程到服务器.按照以下步骤  1.打开计算 ...

  7. java异常的原理以及应用

    父类Throwable 两个分支: error:合理的应用程序不应该出现的严重问题,可以无需声明便抛出,比如内存溢出. Exception:程序还能够克服和恢复的问题. 其中又分为系统异常和普通异常. ...

  8. 关系逻辑运算符---------&&和||

    1.&&符号 常规用法没什么好说的,我们来说说其不同于java的特殊之处 (1)&&符号究竟返回什么 我们知道,0,null,defined,null,NaN等都可以转 ...

  9. 「NOIP2017」「LuoguP3959」 宝藏(爆搜

    题目描述 参与考古挖掘的小明得到了一份藏宝图,藏宝图上标出了 nn 个深埋在地下的宝藏屋, 也给出了这 nn 个宝藏屋之间可供开发的mm 条道路和它们的长度. 小明决心亲自前往挖掘所有宝藏屋中的宝藏. ...

  10. 单机 Oracle 11g(11.2.0.4)手动打补丁PSU(11.2.0.4.8)

    环境说明:database : 11.2.0.4 x64os: centos6.7 x64 准备内容:OPatch : p6880880_112000_Linux-x86-64.zipDB PSU : ...