Vue cli3 多级菜单的实现
仅用作本人学习的记录,及在项目中用到的组件。
// menu-tree 子组件
<template>
<el-submenu v-if="menu.children.length > 0" popper-class="popper_menu" :index="menu.index">
<template slot="title">
<i :class="menu.icon"></i>
<span>{{menu.name}}</span>
</template>
<template v-for="child in menu.children" >
<menu-tree v-if="child.children.length > 0" :menu="child" :key="child.index"></menu-tree>
<el-menu-item v-else :index="child.path" :key="child.index">{{child.name}}</el-menu-item>
</template>
</el-submenu>
</template>
<script>
export default {
name: 'menu-tree',
props: {
menu: {}
},
data () {
return {
}
},
}
</script>
<style lang="less">
</style>```
在el-menu中使用
<el-menu>
<template v-for="menu in menuData">
<menu-tree v-if="menu.children.length > 0" :key="menu.index" :menu="menu"></menu-tree>
</template>
</el-menu>
menuData: [
{
index: '1',
name: '',
icon: '',
children: [
{
index: '1-1',
name: '',
path: '',
children: []
},
{
index: '1-2',
name: '',
path: 'stock',
children: []
},
{
index: '1-3',
name: '',
path: '',
children: []
},
{
index: '1-4',
name: '',
path: '',
children: []
},
{
index: '1-5',
name: '',
path: '',
children: [
{
index: '1-6-1',
name: '',
path: '',
children: []
}
]
}
]
},
{
index: '2',
name: '',
icon: '',
children: [
{
index: '2-1',
name: '',
path: '',
children: []
}
]
}
]