基于iview-admin的动态菜单

  • 思路
  • 定义routers
  • 代码实现

最近公司前台一直在使用vue,其中一个项目决定使用iview UI库,为了方便我们就使用了官方提供的iview-admin后台模板。可我这个菜鸡使用起来举步维艰,下面给大家介绍一下我们实现动态菜单的可行方案。

思路

  1. 将所有的路由在项目的router/routers.js文件中定义好,一定要按照人家的格式定义。如果是左侧菜单,必须 type:"menu"。并且全部的路由定义时都hideInMenu: true默认隐藏。【默认隐藏为了给动态显示菜单做铺垫,当用户有某某个路由时,我们才显示某个路由,即hideInMenu: false
  2. 登录成功后将用户的认证信息保存到客户端,如vux、localstorage,但vuex刷新页面会丢失。
  3. 进入首页时,通过路由加载菜单

yes,就是这个思路,下面我们具体讲解每一步的实现。

定义routers

额…没有那么高大上,就是在人家iview-admin现成的文件中写入我们自己的路由。编写路由的规范,可以跳到我另一篇:iview-admin路由介绍

代码实现

iview admin的main.vue组件中的导航菜单组件引用的值menuList便是我们要注意的重点。

vuex中的menuList

我们着重关注app.js中的getMenuByRouter()
str :用户拥有哪些路由的数组json串,存的是router的name

let str = ''
let arr = ''
export const getMenuByRouter = (list, access) => {str = localStorage.getItem('auth_info') // 登录成功后,后台传入的该用户拥有的路由数组arr = JSON.parse(str) if (arr == null) return false;let res = []forEach(list, item => {if (arr.indexOf(item.name) >= 0 && item.meta.type == 'menu') {item.meta.hideInMenu = false}if (!item.meta || (item.meta && !item.meta.hideInMenu)) {let obj = {icon: (item.meta && item.meta.icon) || '',name: item.name,meta: item.meta}if ((hasChild(item) || (item.meta && item.meta.showAlways)) && showThisMenuEle(item, access)) {obj.children = getMenuByRouter(item.children, access)}if (item.meta && item.meta.href) obj.href = item.meta.hrefif (showThisMenuEle(item, access)) res.push(obj)}})return res
}

为什么根据用户拥有路由,通过遍历就可以动态菜单?

所有的路由我们已经在前台的routers定义好了,默认都是隐藏的。在这遍历用户拥有的路由,判断我们的routers.js中全部路由是否包含用户拥有的路由,将用户拥有的路由,并且是type:menu的,hideInMenu: false设置为false,即显示出来!

本文侧重于提供思路,如果需要源码的话就评论留下联系方式 ~

基于iview-admin的动态菜单相关推荐

  1. 前后端分离,基于vue+elementUI的动态菜单

    制作动态菜单的思路: 就是当前用户登陆后,保存用户的信息,通过用户的id,去查找该用户对象的菜单.后台获取的菜单数据,最终传给前台形式就是父菜单里包含了所有的子菜单:并在前台登录成功后,把菜单数据取出 ...

  2. [风铃开发系列]IView动态菜单配置

    后台的菜单管理配置完了,现在准备把前台的菜单管理和后台的权限联动起来,先看看,IView admin是如何显示的 所以的菜单在router/routers.js下面配置,配置好我们路径,因为前端的路由 ...

  3. Ant Design Pro v5 获取动态菜单与基于角色权限管理视频教程(33 个视频)

    Ant Design Pro v5 获取动态菜单与基于角色权限管理视频教程(33 个视频) 很多人问如何获取动态菜单的,所以在 antd prov 5 来讲一下角色管理的.从最基础的用户管理,角色管理 ...

  4. easyui前端框架模板_.NET Core基于Ace Admin的响应式框架

    (给DotNet加星标,提升.Net技能) 转自:netnrcnblogs.com/netnr/p/12020660.html 前言 .NET Core的响应式框架 基于Ace Admin框架菜单导航 ...

  5. 使用依赖注入的ASP.NET Core 2.0用户角色基础动态菜单管理

    目录 介绍 背景 先决条件 使用代码 第1步 - 创建数据库 创建数据库 第2步 - 创建ASP.NET Core 更新appsettings.json 步骤3 - 在Startup.cs文件中添加I ...

  6. Vue3 中如何加载动态菜单?

    松哥之前写了两篇文章和大家分享了 TienChin 项目中的菜单数据问题,还没看过的小伙伴请戳这里: Vue 里,多级菜单要如何设计才显得专业? TienChin 项目动态菜单接口分析 这两篇文章主要 ...

  7. html响应式布局 ace,.NET Core基于Ace Admin的响应式框架

    原标题:.NET Core基于Ace Admin的响应式框架 转自:netnr cnblogs.com/netnr/p/12020660.html 前言 .NET Core的响应式框架 基于Ace A ...

  8. “动吧“ - crud 练习 part7 - Shiro安全框架简介 - 58~60 - 、[扩展] - 动态菜单 - 60

    名词: ------------------------------------------- subject - 主体.起因 - (登录到==>登录成功后 , 全部的记录) principal ...

  9. JS打字效果的动态菜单代码分享

    这篇文章主要介绍了JS打字效果的动态菜单,推荐给大家,有需要的小伙伴可以参考下. 这是一款基于javascript实现的打字效果的动态菜单特效代码,分享给大家学习学习. 小提示:浏览器中如果不能正常运 ...

最新文章

  1. 黑客都用Python?学习Python的4个理由!
  2. 探索PHP7(一)--性能
  3. 电气:电能扰动质量数据集模拟生成(matlab)
  4. 单点登录系统和CAS的简介
  5. python字符串数组切片性能_python – 为数组切片赋值很慢
  6. linux管理员权限命令_每个系统管理员应该知道的20个Linux命令
  7. 里的type_拥有Type-C接口等于拥有PD快充?当然不是!
  8. VS Code 轻量级插件推荐
  9. 前端日志输出分享(没有技术,纯娱乐)
  10. Linux驱动开发-编写MMA7660三轴加速度传感器
  11. SVM 超平面计算例题
  12. 数学中的圆周率符号怎么输入
  13. 【课程作业】学术英语写作:文献阅读报告2
  14. python学习笔记2-基本数据类型
  15. 一个屌丝程序猿的人生(八十五)
  16. _snprintf_s
  17. 解决Can't connect to HTTPS URL because the SSL module is not available.问题
  18. 1421. 净现值查询
  19. 软技巧相关【5002】Team管理之绩效考核
  20. 【操作系统】在Linux下用C语言实现BBS聊天系统(实现的功能包括私信、禁言、广播、自定义昵称等)

热门文章

  1. 英国无线电设备法规的合规要求-跨境创业找众光
  2. 微信开发者工具 工具栏上面的图标都不见了
  3. 讲故事带你理解消息队列
  4. Azkaban任务流编写
  5. 1017: 表面积和体积(C语言)
  6. IDEA和maven实现逆向工程
  7. Chrome浏览器端跨域不能访问问题处理办法
  8. 鸿蒙不能玩安卓游戏,鸿蒙玩安卓游戏误认PC模拟器 有人担忧有人却笑了
  9. 每日10行代码59:python+appium做淘金币的能量任务
  10. D. Boboniu Chats with Du (664 div2 贪心 枚举)