美文网首页
el-menu 菜单递归循环

el-menu 菜单递归循环

作者: 一只鱼_d589 | 来源:发表于2020-07-28 16:37 被阅读0次

    前端开发中遇到一个el-menu菜单动态加载的问题,深度不确定,数据格式大概是这样的

    menuData: [
                    {
                        id: 1,
                        label: '标签一',
                        children: [
                            {
                                id: 2,
                                label: '内容1-1'
                            },
                            {
                                id: 26,
                                label: '内容1-2'
                            },
                   
                            {
                                id: 3,
                                label: '内容1-3',
                                children: [{
                                    id: 4,
                                    label: '1-3-1'
                                },{
                                    id: 5,
                                    label: '1-3-2'
                                }]
                            
                        ]
                    },
                    {
                        id: 6,
                        label: '标签二',
                    }
                ]
    

    先创建子组件 menuTree.vue

    <template>
        <div>
            <template v-for="(item) in menuData">
                <el-submenu v-if="item.children&&item.children.length>0" :key="item.id" :index="item.id + ''">
                    <template slot="title">{{item.label}}</template>
                    <MenuTree :menuData="item.children"></MenuTree> 
                </el-submenu>
                <el-menu-item v-else :key="item.id" :index="item.id+''">
                    <span slot="title">{{item.label}}</span>
                </el-menu-item>
            </template>
        </div>
    </template>
    
    <script>
      export default {
        props: ['menuData'],
        name: 'MenuTree'
      }
    </script>
    

    再创父组件,并对子组件进行引入

    <template>
        <div class="satellite-content">
            <div class="content-nav">
                <el-menu 
                ref="healthMenu"
                :default-active="defaultActive"
                class="el-menu-vertical-demo"
                @open="handleOpen"
                @close="handleClose"
                background-color="#2A2A2A"
                text-color="#8A8A8A"
                active-text-color="#FFFFFF"
                :default-openeds="defaultOpeneds"
                @select="selectItems">
                    <MenuTree :menuData="treeData"></MenuTree>
                </el-menu>
            </div>
        </div>
    </template>
    <script>
    
    import MenuTree from '@/components/menuTree.vue'
     methods: {
            selectItems(index){
                console.log('selectITEMS', index);
            },
            handleOpen(key, keyPath) {
                console.log(key, keyPath);
            },
            handleClose(key, keyPath) {     
                console.log(key, keyPath);
            },
    
    </script>
    

    根据自己的需求调整样式

    相关文章

      网友评论

          本文标题:el-menu 菜单递归循环

          本文链接:https://www.haomeiwen.com/subject/fdafrktx.html