Element NavMenu动态生成导航菜单
为了演示方便,不从数据库获取了


{
"data":[
{
"id":125,
"authName":"用户管理",
"path":"users",
"children":[
{
"id":110,
"authName":"用户列表",
"path":"users",
"children":[ ],
"order":null
}
],
"order":1
},
{
"id":103,
"authName":"权限管理",
"path":"rights",
"children":[
{
"id":111,
"authName":"角色列表",
"path":"roles",
"children":[ ],
"order":null
},
{
"id":112,
"authName":"权限列表",
"path":"rights",
"children":[ ],
"order":null
}
],
"order":2
},
{
"id":101,
"authName":"商品管理",
"path":"goods",
"children":[
{
"id":104,
"authName":"商品列表",
"path":"goods",
"children":[ ],
"order":1
},
{
"id":115,
"authName":"分类参数",
"path":"params",
"children":[ ],
"order":2
},
{
"id":121,
"authName":"商品分类",
"path":"categories",
"children":[ ],
"order":3
}
],
"order":3
},
{
"id":102,
"authName":"订单管理",
"path":"orders",
"children":[
{
"id":107,
"authName":"订单列表",
"path":"orders",
"children":[ ],
"order":null
}
],
"order":4
},
{
"id":145,
"authName":"数据统计",
"path":"reports",
"children":[
{
"id":146,
"authName":"数据报表",
"path":"reports",
"children":[ ],
"order":null
}
],
"order":5
}
],
"meta":{
"msg":"获取菜单列表成功",
"status":200
}
}
导航原始Json
组件文档地址:https://element.eleme.cn/#/zh-CN/component/menu
全局导入及设置
import element from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
import axios from 'axios'
Vue.use(element, axios)
Vue.prototype.$http = axios
NavMenu结构 (default-active当前激活菜单ID,index菜单唯一标志),目录结构清楚了,v-for循环即可,子菜单循环父菜单的children
<el-menu default-active="11">
<el-submenu index="1">
<!-- 一级导航 -->
<template slot="title">
<span>导航一</span>
</template>
<!-- 子导航 -->
<el-menu-item index="11">
<span slot="title">子导航一</span>
</el-menu-item>
<el-menu-item index="12">
<span slot="title">子导航二</span>
</el-menu-item>
<el-menu-item index="13">
<span slot="title">子导航三</span>
</el-menu-item>
</el-submenu>
</el-menu>
json返回格式
Vue页面全部代码
<template>
<el-row>
<el-col :span="24">
<el-menu default-active="0">
<el-submenu
:index="item.id + ''"
v-for="item in menuList"
:key="item.id"
>
<template slot="title">
<span>{{ item.authName }}</span>
</template>
<el-menu-item
:index="subItem.id + ''"
v-for="subItem in item.children"
:key="subItem.id"
>
<span slot="title">{{ subItem.authName }}</span>
</el-menu-item>
</el-submenu>
</el-menu>
</el-col>
</el-row>
</template> <script>
export default {
name: "about",
data() {
return {
menuList: [],
};
},
created() {
this.getMenuList();
},
methods: {
getMenuList() {
this.$http.get("menus").then((res) => {
console.log(res);
if (res.data.meta.status !== 200) {
this.$message({
message: res.data.meta.msg,
type: "error",
});
}
this.menuList = res.data.data;
});
},
},
};
</script>
<style scoped>
.el-row {
width: 200px;
}
</style>
菜单展示
菜单设置好需要链接到相关页面,Menu属性中增加router即可(是否使用 vue-router 的模式,启用该模式会在激活导航时以 index 作为 path 进行路由跳转),但需要更改上述菜单的ID为path


<template>
<el-row>
<el-col :span="24">
<el-menu default-active="0" unique-opened router>
<el-menu-item index="0">
<template slot="title">
<i class="el-icon-s-home"></i>
<router-link to="/home">首页</router-link>
</template>
</el-menu-item>
<el-submenu
:index="'/' + item.path"
v-for="item in menuList"
:key="item.id"
>
<template slot="title">
<i class="el-icon-s-promotion"></i>
<span>{{ item.authName }}</span>
</template>
<el-menu-item
:index="'/' + subItem.path"
v-for="subItem in item.children"
:key="subItem.id"
>
<i class="el-icon-menu"></i>
<span slot="title">{{ subItem.authName }}</span>
</el-menu-item>
</el-submenu>
</el-menu>
</el-col>
</el-row>
</template>
更改后菜单代码
注: unique-opened 是否只保持一个子菜单的展开
Element NavMenu动态生成导航菜单的更多相关文章
- JQuery实现动态生成树形菜单
jQuery实现动态生成树形菜单 有一个需求:菜单导航条需要依据不同的权限动态提取出来.计划是将功能模块与用户权限之间的关系保持到一个配置表中.所以功能菜单的话就需要动态提取出来再显示.借助jquer ...
- jquery 根据后台传递过来的三维数组动态生成三级菜单
根据后台传递过来的三维数组动态生成三级菜单 <!DOCTYPE html> <html lang="en"> <head> <meta c ...
- jQuery ui背景色动态渐变导航菜单
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 应用rbac组件 动态生成一级菜单
动态生成一级菜单 改表结构 需要知道是否是菜单\icon\名称权限表 +字段: is_menu = models.BooleanField(max_length=32,verbose_name='是否 ...
- 用C#从数据库动态生成AdminLTE菜单的一种方法
当前的应用设计风格趋于Flat扁平化,很多基于BootStrap实现了很多UI非常漂亮的管理界面(Bootstrap admin template). 此核心文件开源在Github:https://g ...
- MVC5+EF6 入门完整教程13 -- 动态生成多级菜单
稍微有一定复杂性的系统,多级菜单都是一个必备组件. 本篇专题讲述如何生成动态多级菜单的通用做法. 我们不用任何第三方的组件,完全自己构建灵活通用的多级菜单. 需要达成的效果:容易复用,可以根据mode ...
- ASP.NET MVC动态生成网站菜单及子菜单
在开发ASP.NET MVC网站时,Insus.NET想实现动态产生网站的主菜单及子菜单. 你需要在网站管理后台管理此2张表(Menu,SubMenu)的信息,添加,删除,编辑,更新等. Sequen ...
- 用jq动态给导航菜单添加active
点击后页面跳转到了新的链接,找到所有的li下的a标签,对其链接地址进行判断,如果和当前浏览器的地址一致,就认为是当前应该激活的菜单,添加active类,否则就取消. <ul class=&quo ...
- django中动态生成二级菜单
一.动态显示二级菜单 1.修改权限表结构 (1)分析需求,要求左侧菜单如下显示: 客户管理: 客户列表 账单管理: 账单列表 (2)修改rbac下的models.py,修改后代码如下: from dj ...
随机推荐
- 什么是RSA
一.RSA引入: RSA是什么,嗯,这是一个好问题,有没有兴趣啊 二.RSA的解释: RSA是一种加密方式,它是现代密码学的代表(什么是现代密码学,这个吗,我感觉就是我们所使用的密码的加密的方式之一可 ...
- vue的项目初始化
1.创建文件 blog 2.下载安装node mongoose 3.(1)vue创建后端项目文件 vue create admin (2)vue创建前端项目文件 vue create web (3)新 ...
- C++ //纯虚函数和抽象类 // 语法 virtual 返回值类型 函数名 (参数列表)=0 //当类中有了纯虚函数 这个类也称为抽象类
1 //纯虚函数和抽象类 2 // 语法 virtual 返回值类型 函数名 (参数列表)=0 3 //当类中有了纯虚函数 这个类也称为抽象类 4 5 6 #include <iostream& ...
- 太细了!阿里十年技术专家联合打造“最新”Jetpack强化实战手册
前言 提到Android架构,我们首先想到的是MVC,MVP,MVVM.他们主要是针对视图和模型的.随着Android的发展,从原来的框架很少,全是自己动手撸.到现在框架越来越多,选型也越来越多,导致 ...
- 06.I/O操作
参考文章 https://www.cnblogs.com/xuwenfeng/articles/2238127.html 1. 驱动器操作 在Windows操作系统中,存储介质统称为驱动器,硬盘由于可 ...
- Linux进程理解与实践(三)进程终止函数和exec函数族的使用
进程的几种终止方式(Termination) (1)正常退出 从main函数返回[return] 调用exit 调用_exit或者_Exit 最后一个线程从其启动处返回 从最后一个线程调用pthrea ...
- 使用JDBC(Dbutils工具包)来从数据库拿取map类型数据来动态生成insert语句
前言: 大家在使用JDBC来连接数据库时,我们通过Dbutils工具来拿取数据库中的数据,可以使用new BeanListHandler<>(所映射的实体类.class),这样得到的数据, ...
- Asp.Net Core 导入Excel数据到Sqlite数据库并重新导出到Excel
Asp.Net Core 导入Excel数据到Sqlite数据库并重新导出到Excel 在博文"在Asp.Net Core 使用 Sqlite 数据库"中创建了ASP.NET Co ...
- NOIP 模拟 6 辣鸡
题解 难得啊,本来能 \(AC\) 的一道题,注释没删,挂了五分,难受 此题暴力很好想,就是直接 \(n^2\) 枚举不同的矩阵组合,记录块内答案和跨块的答案 出题人不会告诉你,这题只要输出块内答案就 ...
- Navicate 连接阿里云MySQL(两种方式及原理讲解)
Navicate 连接阿里云(两种方式及原理讲解) 一.直连方式(通过3306端口) 1.概述 2. 环境准备 3.操作及讲解 二.使用SSH通道 1.概述 2.环境准备 3.操作及讲解 如果对你有帮 ...