This article example shares the specific code of Vue recursively implementing the three-level menu for your reference. The specific content is as follows Parent Component <template> <div class="menu-level-menu menu-level-menu-enter" v-if="showLevelMenu"> <menu-item class="menu-item" :menuDate="menuList"></menu-item> </div> </template> Subcomponents <template> <div> <div class="" v-for="(menu, index) in menuDate" :key="index"> // Each menu item <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> // Recursively display the menu <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> Rendering The above is the full content of this article. I hope it will be helpful for everyone’s study. I also hope that everyone will support 123WORDPRESS.COM. You may also be interested in:
|
<<: Docker deploys Laravel application to realize queue & task scheduling
>>: MySQL 5.7.21 Installer Installation Graphic Tutorial under Windows 10
Problem description (the following discussion is ...
Table of contents 1. Structural instructions Modu...
This article mainly introduces the case of Vue en...
Every time I design a web page or a form, I am tr...
Preface We all know that the import and export of...
Unlike other types of design, web design has been ...
1. Application Scenarios Parent page a.jsp Subpage...
Copy code The code is as follows: jQuery.cookie =...
Since its release in 2013, Docker has been widely...
I've been learning about stacking contexts re...
Table of contents 1. Environmental Preparation 1....
Pull the image: [mall@VM_0_7_centos ~]$ sudo dock...
Alignment issues like type="radio" and t...
1. iframe definition and usage The iframe element...
Why should we use CSS animation to replace JS ani...