Vue 获取列表自动渲染层级之 el-menu

案例图:

json数据渲染渲染

  data() {
            return {
                ItemList: [{
                    name: '用户管理',
                    id: 1,
                    children: [{
                        name: '添加用户',
                        id: 101,
                        children: []
                    }, {
                        name: '编辑用户',
                        id: 102,
                        children: []
                    }]
                }, {
                    name: '权限管理',
                    id: 1,

                }, {
                    name: '软件管理',
                    id: 2,
                    children: [{
                        name: '红外软件',
                        id: 201,
                        children: [{
                            name: '用户管理',
                            id: 2012,
                        }, {
                            name: '编辑用户',
                            id: 2013,
                        }]
                    }, {
                        name: '雷达软件',
                        id: 202,
                        children: [{
                            name: '用户管理',
                            id: 2015,
                        }, {
                            name: '编辑用户',
                            id: 2014,
                        }]
                    }]
                }]

            }
        },

渲染代码:

 <!-- 创建列表 -->
<el-menu  background-color="#333744" text-color="#fff" active-text-color="#ffd04b">
<!--循环列表数据  一级类目-->             
<template v-for="item in ItemList">
                   
<el-submenu  v-if="item.children&& item.children.length!==0" :index="item.id+ '' " :key="item.name">
                        
<template slot="title">
                            
<i class="el-icon-location"></i>
                            
<span>{{item.name}}</span>
                      
 </template>
<!-- 循环一级类目里面的二级类目 -->
<template v-for="one  in item.children ">
<!-- 判断是否有子类目的节数据>                
 <el-submenu v-if="one.children && one.children.length!==0" :index="one.id + '' " :key="one.name"> 
                       
 <template slot="title">
                           
 <i class="el-icon-location"></i>
                           
 <span>{{one.name}}</span>
                       
</template>
<!-- 循环一级类目里面的二级类目的三级类目 -->

<template v-for="to  in one.children">
 <!-- 判断是否有子类目的节数据>
<el-submenu v-if="to.children && to.children.length!==0" :index="to.id + '' " key="to.name">
                            
<template slot="title">
                                
<i class="el-icon-location"></i>
                               
 <span>{{to.name}}</span>
                           
</template>
</el-submenu>
<!-- 否者直接将三级类目作为子类目-->
<el-menu-item v-else :index="to.id + '' " :key="to.name"> <template slot="title">
    
<i class="el-icon-location"></i>
    
<span>{{to.name}}</span>

</template>

</el-menu-item>

</template>

</el-submenu>
<!-- 否者直接将二级类目作为子类目-->
<el-menu-item v-else :index="one.id + '' " :key="one.name"> <template slot="title">
    
<i class="el-icon-location"></i>
    
<span>{{one.name}}</span>
</template>

</el-menu-item>

</template>

</el-submenu>
<!-- 否者直接将一级类目作为子类目-->
<el-menu-item v-else :index="index + '' " :key="item.name">
    
<template slot="title">
    
<i class="el-icon-location"></i>
    
<span>{{item.name}}</span>
</template>
</el-menu-item>
</template>
</el-menu>

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值