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 prototype属性使用说明
May 13 Javascript
js中如何把字符串转化为对象、数组示例代码
Jul 17 Javascript
js验证整数加保留小数点的简单实例
Dec 02 Javascript
javascript框架设计之浏览器的嗅探和特征侦测
Jun 23 Javascript
js实现获取div坐标的方法
Nov 16 Javascript
Bootstrap Table使用整理(三)
Jun 09 Javascript
vue父子组件的嵌套的示例代码
Sep 08 Javascript
详解如何去除vue项目中的#——History模式
Oct 13 Javascript
Vue.js项目中管理每个页面的头部标签的两种方法
Jun 25 Javascript
详释JavaScript执行环境与执行栈
Apr 02 Javascript
微信小程序和H5页面间相互跳转代码实例
Sep 19 Javascript
使用 Opentype.js 生成字体子集的实例代码详解
May 25 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分页显示制作详细讲解
2006/12/05 PHP
推荐Discuz!5的PHP代码高亮显示与实现可运行代码
2007/03/15 PHP
PHP的openssl加密扩展使用小结(推荐)
2016/07/18 PHP
javascript EXCEL 操作类代码
2009/07/30 Javascript
javascript之AJAX框架使用说明
2010/04/24 Javascript
ko knockoutjs动态属性绑定技巧应用
2012/11/14 Javascript
详解JavaScript中Date.UTC()方法的使用
2015/06/12 Javascript
jQuery设置单选按钮radio选中/不可用的实例代码
2016/06/24 Javascript
jquery实现全选、不选、反选的两种方法
2016/09/06 Javascript
JavaScript定义数组的三种方法(new Array(),new Array('x','y')
2016/10/04 Javascript
简单实现Bootstrap标签页
2020/08/09 Javascript
vue-router 中router-view不能渲染的解决方法
2017/05/23 Javascript
带你了解session和cookie作用原理区别和用法
2017/08/14 Javascript
Web技术实现移动监测的介绍
2017/09/18 Javascript
详解vue表单——小白速看
2018/04/08 Javascript
原生JS实现无缝轮播图片
2020/06/24 Javascript
Python translator使用实例
2008/09/06 Python
在Python中用get()方法获取字典键值的教程
2015/05/21 Python
在Python操作时间和日期之asctime()方法的使用
2015/05/22 Python
Go语言基于Socket编写服务器端与客户端通信的实例
2016/02/19 Python
python中实现延时回调普通函数示例代码
2017/09/08 Python
tensorflow训练中出现nan问题的解决
2018/02/10 Python
Django Rest framework之认证的实现代码
2018/12/17 Python
浅谈pytorch卷积核大小的设置对全连接神经元的影响
2020/01/10 Python
python numpy库linspace相同间隔采样的实现
2020/02/25 Python
Pycharm安装并配置jupyter notebook的实现
2020/05/18 Python
护理学毕业生求职信
2013/11/14 职场文书
宣传策划类求职信范文
2014/01/31 职场文书
高一数学教学反思
2014/02/07 职场文书
婚前保证书
2014/04/29 职场文书
暑假安全教育广播稿
2014/09/10 职场文书
质监局领导班子践行群众路线整改方案
2014/10/26 职场文书
个人借条范本
2015/05/25 职场文书
小兵张嘎观后感300字
2015/06/03 职场文书
二婚主持词
2015/06/30 职场文书
Redis的字符串是如何实现的
2021/10/24 Redis