vue递归实现三级菜单
2021-05-25 04:10
871 查看
本文实例为大家分享了vue递归实现三级菜单的具体代码,供大家参考,具体内容如下
父组件
<template> <div class="menu-level-menu menu-level-menu-enter" v-if="showLevelMenu"> <menu-item class="menu-item" :menuDate="menuList"></menu-item> </div> </template>
子组件
<template> <div> <div class="" v-for="(menu, index) in menuDate" :key="index"> // 每一个菜单项 <div class="menu-row" @click="menuSpread(menu)" :class="[{'menu-row-selected': menu.selected && menu.children.length <= 0}]"> <div class="menu-row-left"> <div class="menu-row-left-line" :class="[{'menu-selected': menu.selected && menu.children.length <= 0}]"></div> <i class="iconfont" :class="[menu.menuIcon, {'color-icon': showIconColor(menu)}]"></i> </div> <div class="menu-row-right"> <span :class="[{'font-16': menu.level === '0'}]">{{menu.menuName}}</span> <i class="c" v-if="menu.children.length <= 0"></i> <i class="iconfont icon-liebiaoxiala" v-if="menu.children.length>0 && !menu.selected"></i> <i class="iconfont icon-liebiaoshouqi" v-if="menu.children.length>0 && menu.selected"></i> </div> </div> // 递归展示菜单 <menu-item v-show="menu.selected" v-if="menu.children.length>0" :menuDate="menu.children"></menu-item> </div> </div> </template> <script> export default { props: { menuDate: Array }, name: 'MenuItem', methods: { menuSpread (menu) { if (menu.menuRouter) this.$router.push(menu.menuRouter); menu.selected = !menu.selected; this.recursion(this.menuDate, menu); }, recursion (all, temp) { all.forEach(item => { if (item.menuName !== temp.menuName) { item.selected = false; this.recursion(item.children, temp); } }); }, showIconColor (menu) { let show = false; if (menu.level === '0') { menu.children.forEach(item => { if (item.children.length <= 0 && item.selected) { show = true; } if (item.children.length > 0) { item.children.forEach(item => { if (item.selected) { show = true; } }); } }); } return show; } } }; </script>
效果图
以上就是本文的全部内容,希望对大家的学习有所帮助
您可能感兴趣的文章:相关文章推荐
- vue函数防抖与节流的正确使用方法
- vue实现同时设置多个倒计时
- vue使用节流函数的踩坑实例指南
- vue实现钉钉的考勤日历
- vue 过滤器和自定义指令的使用
- 如何在vue3.0+中使用tinymce及实现多图上传文件上传公式编辑功能
- vue3.0公共组件自动导入的方法实例
- Vue 如何追踪数据变化
- vue监听路由变化时watch方法会执行多次的原因及解决
- vue项目watch内的函数重复触发问题的解决
- vue3利用store实现记录滚动位置的示例
- 如何在Vue中实现Svelte的Defer Transition
- Vue 内置组件keep-alive的使用示例
- vue diff算法全解析
- vue 实现可拖曳的树状结构图
- VUE+Canvas 实现桌面弹球消砖块小游戏的示例代码
- 如何用VUE和Canvas实现雷霆战机打字类小游戏
- vue + element ui实现播放器功能的实例代码
- 开发一个封装iframe的vue组件
- 如何让vue长列表快速加载