源码链接:树形菜单组件
<template>
<div>
<div v-for="item in menus" :key="item.id" :index="item.menuUrl">
<!-- 有子菜单 -->
<el-submenu :index="item.menuUrl" v-if="item.children">
<template slot="title" >
<i :class="item.menuIcon" style="width:30px;"></i>
<span slot="title" style="margin-left:10px;" >{{ item.menuName }}</span>
</template>
<tree-menu :menus="item.children" ></tree-menu>
</el-submenu>
<!-- 无子菜单 -->
<el-menu-item :index="item.menuUrl" v-else >
<i :class="item.menuIcon" style="width:30px;"></i>
<span slot="title" style="margin-left:10px;">{{ item.menuName }}</span>
</el-menu-item>
</div>
</div>
</template>
<script>
export default {
props: [‘menus‘],
name: ‘tree-menu‘,
}
</script>
使用时:
<template>
<el-row class="main-wrap">
<el-col :span="3" class="left-nav">
<el-menu
class="left-nav-list"
:router=‘true‘
background-color="#070916"
text-color="#fff"
:default-active="$route.path"
>
<tree-menu :menus="leftmenus"></tree-menu>
</el-menu>
</el-col>
<el-col :span="21" class="right-content">
<transition name="fade" mode="out-in">
<router-view/>
</transition>
</el-col>
</el-row>
</template>
<script>
import treeMenu from ‘@/components/common/TreeMenu/treeMenu‘
export default {
name: ‘Base‘,
data(){
return {
leftmenus:[
{menuName:‘用户管理‘,menuUrl:‘/Base/user‘}
]
}
},
components:{treeMenu}
}
</script>
<style scoped lang="stylus">
</style>
原文:https://www.cnblogs.com/xingguozhiming/p/13154563.html