vue-admin-template动态菜单后台获取菜单
vue-admin-template、vue-element-admin配置动态菜单,菜单数据从后台获取。
我在网上search了几个小时也没有找到想要的emm,翻官网也没有说明,只说明了路由覆盖。只能自己手撸试调,并实现了该功能。因为场景一般都是根据不同角色访问不同菜单的。
首先这是我后台传来的菜单:
{
"code":0,
"msg":null,
"data":[
{
"id":1,
"parentId":0,
"title":"仪表盘",
"path":"/dashboard",
"icon":"dashboard",
"sortNumber":1,
"status":"1"
},
{
"id":2,
"parentId":0,
"title":"表单",
"path":"/form/index",
"icon":"form",
"sortNumber":2,
"status":"1"
},
{
"id":3,
"parentId":0,
"title":"nested",
"path":"/nested",
"icon":"nested",
"sortNumber":1,
"status":"1"
},
{
"id":4,
"parentId":3,
"title":"menu1",
"path":"/menu1",
"icon":null,
"sortNumber":1,
"status":"1"
},
{
"id":7,
"parentId":3,
"title":"menu2",
"path":"/nested/menu2",
"icon":null,
"sortNumber":2,
"status":"1"
},
{
"id":5,
"parentId":4,
"title":"menu1-1",
"path":"/nested/menu1/menu1-1",
"icon":null,
"sortNumber":1,
"status":"1"
},
{
"id":6,
"parentId":4,
"title":"menu1-2",
"path":"/nested/menu1/menu1-2",
"icon":null,
"sortNumber":2,
"status":"1"
}
]
}
在api中定义了获取菜单的请求函数
export function getMenus() {
return request({
url: '/user/menus',
method: 'get'
})
}
在src\layout\components\Sidebar\index.vue中
// 修改路由遍历,变量为 requestMenus
<sidebar-item v-for="route in requestMenus" :key="route.path" :item="route" :base-path="route.path" />
// 导入获取菜单请求
import { getMenus } from '@/api/user'
data() {
return {
requestMenus: [] // 自定义的菜单变量
}
},
// ...其他不变
created() {
// 页面创建时获取菜单,算是初始化
this.menus()
},
methods: {
menus() {
getMenus().then(res => {
this.requestMenus = this.listToTree(res.data, 0)
})
}, listToTree(list, parentId) { // 递归转换
const tree = []
for (let i = 0; i < list.length; i++) {
const temp = list[i]
temp.meta = { title: temp.title, icon: temp.icon }
if (temp.parentId === parentId) {
// 递归子节点
temp.children = this.listToTree(list, temp.id)
tree.push(temp)
}
}
return tree
}
}
以上配置的前提是router/index.js中的路由,能匹配后台传来路由路径。原来写死的路由配置我没有修改过
效果

vue-admin-template动态菜单后台获取菜单的更多相关文章
- 在Vue中使用了Swiper ,动态从后台获取数据的之后,swiper滑动失效??
在Vue中使用了Swiper ,动态从后台获取数据的之后,swiper滑动失效?? 是因为swiper提前初始化了,那时候数据还没有完全出来.这里有两种解决办法 1. 使用vue提供的$nextTic ...
- vue $refs 无法动态拼接,获取不到对象(转)
原文地址: http://www.php.cn/js-tutorial-410304.html 本篇文章给大家带来的内容是关于vue $refs中不使用拼接的原因以及解决方法,有一定的参考价值,有需要 ...
- vue addRoutes路由动态加载
需求:增加权限控制,实现不同角色显示不同的路由导航 思路:每次登陆后请求接口返回当前角色路由 核心方法:vue-router2.2.0的addRoutes方法 + vuex 以下是我实现的获取菜单路由 ...
- vue、iview动态菜单(可折叠)
vue项目与iview3实现可折叠动态菜单. 菜单实现一下效果: 动态获取项目路由生成动态三级菜单导航 可折叠展开 根据路由name默认打开子目录,选中当前项 自动过滤需要隐藏的路由(例:登陆) 在手 ...
- 使用vue-element-admin框架从后端动态获取菜单
1.前言 vue-element-admin是一个纯前端的框架,左侧菜单是根据路由生成的.实际开发中经常需要根据当前登陆人员的信息从后端获取菜单进行展示,本文将详细介绍如何实现该功能. 2.详解 ...
- ligerUI---下拉菜单(menubar)动态显示(从后台获取数据)
写在前面: ligerui的下拉菜单是有点丑的,这也是没有办法的事........这里主要记录下,如何从后台获取数据进行菜单显示. 有两种方式:1.使用json数组来动态添加 2.字符串拼接. 其 ...
- 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(20)-权限管理系统-根据权限获取菜单
原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(20)-权限管理系统-根据权限获取菜单 不知不觉到20讲,真是漫长的日子,可惜最近工作挺忙,要不可以有更多 ...
- vue 后台管理系统菜单权限管理
来自:https://www.cnblogs.com/fqh123/p/11094296.html 侵删 login登录方法 login() { if (!this.username) { retur ...
- vue+element UI 使用select元素动态的从后台获取到
VUE select元素动态的从后台获取到 <el-form-item label="选择店铺"> <el-select v-model="value& ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(20)-权限管理系统-根据权限获取菜单
系列目录 不知不觉到20讲,真是漫长的日子,可惜最近工作挺忙,要不可以有更多的时间来更新,多谢大家的一路支持.如果你觉得好,记得帮我点击推荐^-^ 我们在之前已经插入一些真实数据,其中包含了一个用户和 ...
随机推荐
- Redis系列内容完整版
@ 目录 Redis系列之_Redis介绍安装配置 第一章 redis初识 1.1 Redis是什么 1.2 Redis特性(8个) 1.3 Redis单机安装 1.3.1下载安装 1.3.2三种启动 ...
- Python基础——函数的理解、函数对象、函数嵌套、闭包函数、及其应用
文章目录 函数也是变量 可以赋值 可以当做函数当做参数传给另外一个函数 可以当做函数当做另外一个函数的返回值 可以当做容器类型的一个元素 函数对象应用示范 原始版 修正版 函数嵌套 函数的嵌套调用 函 ...
- C#学习笔记---异常捕获和变量
异常捕获 使用异常捕获可以捕获出现异常的代码块,防止因为异常抛出造成的程序卡死的情况发生. try{}catch{}finally{}结构 //异常捕获 try { string str=Consol ...
- 使用gitbook快速搭建文档中心
背景 在研发一个系统,主要给公司内部同事用,按理说,简单点的话,搞个使用文档就行了,但产品经理希望是做成一个文档中心,比如,你学习个新技术的时候,比如vue,一般有个在线的帮助文档,他的想法就是这种. ...
- QT(3)-QTableView
@ 目录 0 相关文章 1 说明 2 常用函数 2.1 clearSpans 2.2 setSpan 2.3 columnAt 2.4 rowAt 2.5 columnSpan 2.6 rowSpan ...
- 慎用:git reset --hard
丧心病狂的命令:git reset --hard commit ,我以后没弄懂这个命令之前,再也不碰它了,背后凉嗖嗖的,谁敢啊. 事情的原由是我本地git commit 的时候,发现文件多了,想删掉本 ...
- 八个SVN提交的好习惯(转)
一.提交之前先更新 1. SVN更新的原则是要随时更新,随时提交.当完成了一个小功能,能够通过编译并且自己测试之后,谨慎地提交. 2. 如果在修改的期间别人也更改了sv ...
- maven2介绍(转)
http://ttitfly.iteye.com/blog/152557 Maven2主要配置文件:pom.xml和settings.xml. POM是Maven的核心对象模型,对于项目,一般只需要p ...
- Vue项目引用百度地图并实现搜索定位等功能
Tip:本篇文章为案例分析,技术点较多,所以篇幅较长,认真阅览的你一定会学到很多知识. 前言:百度地图开放平台 给开发者们提供了丰富的地图功能与服务,使我们的项目中可以轻松地实现地图定位.地址搜索.路 ...
- Android的内部存储和外部存储怎么区分?
1.定义 内部存储:内部存储位于Android手机系统的data/data/<包名>这个目录下,内部存储是私有的,主要用于存储系统和应用程序的某些数据,对于其他应用程序来说是不可见的,并且 ...