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动态菜单后台获取菜单的更多相关文章

  1. 在Vue中使用了Swiper ,动态从后台获取数据的之后,swiper滑动失效??

    在Vue中使用了Swiper ,动态从后台获取数据的之后,swiper滑动失效?? 是因为swiper提前初始化了,那时候数据还没有完全出来.这里有两种解决办法 1. 使用vue提供的$nextTic ...

  2. vue $refs 无法动态拼接,获取不到对象(转)

    原文地址: http://www.php.cn/js-tutorial-410304.html 本篇文章给大家带来的内容是关于vue $refs中不使用拼接的原因以及解决方法,有一定的参考价值,有需要 ...

  3. vue addRoutes路由动态加载

    需求:增加权限控制,实现不同角色显示不同的路由导航 思路:每次登陆后请求接口返回当前角色路由 核心方法:vue-router2.2.0的addRoutes方法 + vuex 以下是我实现的获取菜单路由 ...

  4. vue、iview动态菜单(可折叠)

    vue项目与iview3实现可折叠动态菜单. 菜单实现一下效果: 动态获取项目路由生成动态三级菜单导航 可折叠展开 根据路由name默认打开子目录,选中当前项 自动过滤需要隐藏的路由(例:登陆) 在手 ...

  5. 使用vue-element-admin框架从后端动态获取菜单

    1.前言 ​ vue-element-admin是一个纯前端的框架,左侧菜单是根据路由生成的.实际开发中经常需要根据当前登陆人员的信息从后端获取菜单进行展示,本文将详细介绍如何实现该功能. 2.详解 ...

  6. ligerUI---下拉菜单(menubar)动态显示(从后台获取数据)

    写在前面: ligerui的下拉菜单是有点丑的,这也是没有办法的事........这里主要记录下,如何从后台获取数据进行菜单显示. 有两种方式:1.使用json数组来动态添加  2.字符串拼接.  其 ...

  7. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(20)-权限管理系统-根据权限获取菜单

    原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(20)-权限管理系统-根据权限获取菜单 不知不觉到20讲,真是漫长的日子,可惜最近工作挺忙,要不可以有更多 ...

  8. vue 后台管理系统菜单权限管理

    来自:https://www.cnblogs.com/fqh123/p/11094296.html 侵删 login登录方法 login() { if (!this.username) { retur ...

  9. vue+element UI 使用select元素动态的从后台获取到

    VUE select元素动态的从后台获取到 <el-form-item label="选择店铺"> <el-select v-model="value& ...

  10. ASP.NET MVC5+EF6+EasyUI 后台管理系统(20)-权限管理系统-根据权限获取菜单

    系列目录 不知不觉到20讲,真是漫长的日子,可惜最近工作挺忙,要不可以有更多的时间来更新,多谢大家的一路支持.如果你觉得好,记得帮我点击推荐^-^ 我们在之前已经插入一些真实数据,其中包含了一个用户和 ...

随机推荐

  1. NebulaGraph实战:3-信息抽取构建知识图谱

      自动信息抽取发展了几十年,虽然模型很多,但是泛化能力很难用满意来形容,直到LLM的诞生.虽然最终信息抽取质量部分还是需要专家审核,但是已经极大的提高了信息抽取的效率.因为传统方法需要大量时间来完成 ...

  2. MySQL运维2-主从复制

    一.主从复制概念 主从复制是指将主数据库的DDL和DML操作通过二进制日志传到从服务器中,然后在从服务器上对这些日志重新执行也叫重做,从而使得从数据库和主库的数据保持同步. MySQL支持一台主库同时 ...

  3. dms

          产品解决方案文档与社区免费试用定价云市场合作伙伴支持与服务了解阿里云       备案控制台 首页关系型数据库NoSQL数据库数据仓库数据管理工具向量数据库免费试用 个人     打卡 发 ...

  4. 2020/4/26 2-sat 学习笔记

    2-sat 吧.... 其实我jio得它一点都不难 嗯 2-sat是个啥东西呢?其实就是有很多人,他们每个人有两个要求,一个要求可以说是要求一个数为0或1而对于第i个数,我们可以选择为0或为1最终询问 ...

  5. 「CSP-2023」我曾璀璨星空,星月相伴,致远方,致过往。

    Day -1   像往常一样去上学.虽然身在学校但感觉心还在比赛上.在一个上午课间准备去上厕所时遇见了信息老师.她在教我们班信息之前我的一些奖状的指导教师就是写的她,之前就认识了,每次碰到她都会朝我笑 ...

  6. 使用Github Copilot完成代码编写

    上篇文章,我们使用VSCode创建了T.Global解决方案和两个类库工程,接下来我们使用Github Copilot完成代码编写 先说以下业务需求: 提供一个公共的本地化组件,支持对数字.货币.时间 ...

  7. wireshark数据包时间戳修改

    1.数据包格式 两种数据包格式,pcap和pcapng两种.pcapng为升级版,时间戳细粒度更高. 2.时间戳位置(arrival time) 时间戳在数据包中表现为物理层的arrival time ...

  8. CF1523D Love-Hate 题解

    抽象化题意: 一共有 \(m\) 个元素,给定 \(n\) 个集合,每个集合的元素不超过 \(15\) 个,求出一个元素个数最多的集合 \(S\) 是至少 \(\lceil \dfrac{n}{2} ...

  9. Kafka基本原理、生产问题总结及性能优化实践

    Kafka是最初由Linkedin公司开发,是一个分布式.支持分区的(partition).多副本的(replica),基于zookeeper协调的分布式消息系统,它的最大的特性就是可以实时的处理大量 ...

  10. c#中适配器模式详解

    基础介绍:   想象这样一个场景,原项目中接口返回的数据是XML格式的数据,但现在来了一个新客户,它期望接口返回的数据类型为json格式的.   想要实现要么就是改原有接口,但这样就违反了开闭原则,容 ...