element 中 el-menu 组件的无限极循环思路代码详解


Posted in Javascript onApril 26, 2020

实现思路主要组件嵌套(组件自己调用自己)

下面是组件所需要的数据

{
 "code": 1,
 "data": {
  "menuVoList": [
   {
    "childList": [
     {
      "childList": [],
      "menu": {
       "createBy": "0-1",
       "createTime": 1587610158,
       "id": "2f006aed6a114579bd8b9809724428f7",
       "name": "系统用户权限管理",
       "parentId": "6d68079a16b94292990f612237bd048e",
       "path": "/userallotrole",
       "updateBy": "0-1",
       "updateTime": 1587610221
      }
     },
     {
      "childList": [],
      "menu": {
       "createBy": "0-1",
       "createTime": 1587605059,
       "id": "c948265cdf27420eb7b6b502292c5990",
       "name": "系统用户管理",
       "parentId": "6d68079a16b94292990f612237bd048e",
       "path": "/user",
       "updateBy": "0-1",
       "updateTime": 1587610230
      }
     }
    ],
    "menu": {
     "createBy": "0-1",
     "createTime": 1587605025,
     "id": "6d68079a16b94292990f612237bd048e",
     "name": "用户管理",
     "parentId": "",
     "path": "/#",
     "updateBy": "0-1",
     "updateTime": 1587610117
    }
   },
   {
    "childList": [
     {
      "childList": [],
      "menu": {
       "createBy": "0-1",
       "createTime": 1587469457,
       "id": "d4b70897052742bb860cf14cea8cf131",
       "name": "新建/修改菜单",
       "parentId": "82e5ca1ab2e04d8faffeb973286771ec",
       "path": "/newMenu",
       "updateBy": "0-1",
       "updateTime": 1587469457
      }
     }
    ],
    "menu": {
     "createBy": "0-1",
     "createTime": 1587469385,
     "id": "82e5ca1ab2e04d8faffeb973286771ec",
     "name": "菜单管理",
     "parentId": "",
     "path": "",
     "updateBy": "0-1",
     "updateTime": 1587469426
    }
   },
   {
    "childList": [
     {
      "childList": [],
      "menu": {
       "createBy": "0-1",
       "createTime": 1587468494,
       "id": "3a092edd120d40b79322d8486e53e5a1",
       "name": "系统角色管理",
       "parentId": "ce5704f647d341fe8334ad12c6dd4a6b",
       "path": "/setrole",
       "updateBy": "0-1",
       "updateTime": 1587469340
      }
     },
     {
      "childList": [],
      "menu": {
       "createBy": "0-1",
       "createTime": 1587469360,
       "id": "61d0e4fecbed407d89b1ea5878072374",
       "name": "设置角色权限",
       "parentId": "ce5704f647d341fe8334ad12c6dd4a6b",
       "path": "/authorization",
       "updateBy": "0-1",
       "updateTime": 1587469360
      }
     },
     {
      "childList": [],
      "menu": {
       "createBy": "0-1",
       "createTime": 1587469520,
       "id": "a1a2f6bcbfba4a7f9178ef03ea0fe5b0",
       "name": "权限管理",
       "parentId": "ce5704f647d341fe8334ad12c6dd4a6b",
       "path": "/resource",
       "updateBy": "0-1",
       "updateTime": 1587624251
      }
     }
    ],
    "menu": {
     "createBy": "0-1",
     "createTime": 1587468417,
     "id": "ce5704f647d341fe8334ad12c6dd4a6b",
     "name": "角色管理",
     "parentId": "",
     "path": "",
     "updateBy": "0-1",
     "updateTime": 1587468417
    }
   }
  ]
 },
 "message": "成功"
}

 现在我们来设置组件 (在 componet 文件夹里面建一个 menu.vue) 代码如下

<template>
 <div>
  <template v-for="value in menuData">
   <el-submenu v-if="value.childList.length > '0'" :index="value.menu.name"> //判断传进来的数据中 childList 数组length 是否大于零, 如果大于零表示 不是不需要在循环下去了
    <template slot="title">
     <i class="el-icon-s-tools" />
     <span slot="title">{{ value.menu.name }}</span>
    </template>
    <MenuTree :menu-data="value.childList" />
   </el-submenu>
   <el-menu-item v-else :index="value.menu.path">
    <span slot="title">{{ value.menu.name }}</span>
   </el-menu-item>
  </template>
 </div>
</template>
<script>
export default {
 name: 'MenuTree',
 props: ['menuData']
}
</script>
<style lang="scss" >
.el-submenu__title i {
 color: #fff;
}
.el-menu--collapse {
 width: 54px;
}
</style>

接下来 在需要使用 menu 组件的地方引入刚才定义的组件

<template>
   <el-menu
    class="el-menu-vertical-demo"
    :collapse="isCollapse"
    background-color="#4A5A74"
    active-text-color="#ffd04b"
    text-color="#fff"
    :unique-opened="true"
    :default-active="this.$route.path"
    @select="handleSelect"
   >
    <menuTree :menu-data="list" />
   </el-menu>
</template>
 
import menuTree from '@/component/menu'
export default{
 components: {
  menuTree
 },
data: {
  list: [] 
},
methods: {
   getMenuList({}).then(res => { //我这里是请求后台得来得数据,没有数据直接用我上面得数据,不过得像我下面这样处理
    if (res.status === 200) {
     this.list = res.data.data.menuVoList
    }
   })
}
}

 这样,em-menu 组件的无限极循环便实现了,注意,我 上面代码中 el-menu 的属性可能多了一些,请根据自己需要删除

到此这篇关于element 中 el-menu 组件的无限极循环的文章就介绍到这了,更多相关el-menu 组件无限极循环内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
JavaScript 盒模型 尺寸深入理解
Dec 31 Javascript
js出生日期 年月日级联菜单示例代码
Jan 10 Javascript
JavaScript简单实现鼠标拖动选择功能
Mar 06 Javascript
以BootStrap Tab为例写一个前端组件
Jul 25 Javascript
JS获取字符对应的ASCII码实例
Sep 10 Javascript
使用nvm管理不同版本的node与npm的方法
Oct 31 Javascript
解决vue2.0 element-ui中el-upload的before-upload方法返回false时submit()不生效问题
Aug 24 Javascript
解决vue 引入子组件报错的问题
Sep 06 Javascript
laydate时间日历插件使用方法详解
Nov 14 Javascript
vue中添加与删除关键字搜索功能
Oct 12 Javascript
基于vue实现图片验证码倒计时60s功能
Dec 10 Javascript
详解为element-ui的Select和Cascader添加弹层底部操作按钮
Feb 07 Javascript
微信小程序个人中心的列表控件实现代码
Apr 26 #Javascript
vue项目中自定义video视频控制条的实现代码
Apr 26 #Javascript
vue项目启动出现cannot GET /服务错误的解决方法
Apr 26 #Javascript
详解vuejs中执行npm run dev出现页面cannot GET/问题
Apr 26 #Javascript
jquery检测上传文件大小示例
Apr 26 #jQuery
element中的$confirm的使用
Apr 26 #Javascript
JavaScript监听一个DOM元素大小变化
Apr 26 #Javascript
You might like
php学习 函数 课件
2008/06/15 PHP
php 小乘法表实现代码
2009/07/16 PHP
PHP发送短信代码分享
2015/08/11 PHP
一个JavaScript继承的实现
2006/10/24 Javascript
动态刷新 dorado树的js代码
2009/06/12 Javascript
jQuery实现的Email中的收件人效果(按del键删除)
2011/03/20 Javascript
关于javaScript注册click事件传递参数的不成功问题
2014/07/18 Javascript
JS+CSS实现美化的下拉列表框效果
2015/08/11 Javascript
JS学习之表格的排序简单实例
2016/05/16 Javascript
js基于cookie记录来宾姓名的方法
2016/07/19 Javascript
webpack项目轻松混用css module的方法
2018/06/12 Javascript
前端js中的事件循环eventloop机制详解
2019/05/15 Javascript
vue引入微信sdk 实现分享朋友圈获取地理位置功能
2019/07/04 Javascript
如何在微信小程序中使用骨架屏的步骤
2020/06/12 Javascript
vue 实现动态路由的方法
2020/07/06 Javascript
微信小程序12行js代码自己写个滑块功能(推荐)
2020/07/15 Javascript
echarts.js 动态生成多个图表 使用vue封装组件操作
2020/07/19 Javascript
Python自动化开发学习之三级菜单制作
2017/07/14 Python
Python文件和流(实例讲解)
2017/09/12 Python
Python 实现字符串中指定位置插入一个字符
2018/05/02 Python
浅谈dataframe中更改列属性的方法
2018/07/10 Python
使用django-guardian实现django-admin的行级权限控制的方法
2018/10/30 Python
对python内置map和six.moves.map的区别详解
2018/12/19 Python
使用Python自动化破解自定义字体混淆信息的方法实例
2019/02/13 Python
简单了解python的break、continue、pass
2019/07/08 Python
Django 多表关联 存储 使用方法详解 ManyToManyField save
2019/08/09 Python
使用PyOpenGL绘制三维坐标系实例
2019/12/24 Python
python爬取王者荣耀全皮肤的简单实现代码
2020/01/31 Python
Python3实现英文字母转换哥特式字体实例代码
2020/09/01 Python
python如何用matplotlib创建三维图表
2021/01/26 Python
什么是Deployment descriptors;都有什么类型的部署描述符
2015/07/28 面试题
党员群众路线个人整改措施思想汇报
2014/10/12 职场文书
党的群众路线教育实践活动先进个人材料
2014/12/24 职场文书
大学学生个人总结
2015/02/15 职场文书
2015年行政人事工作总结
2015/05/21 职场文书
MySQL中datetime时间字段的四舍五入操作
2021/10/05 MySQL