vue+elementUi 动态导航栏

首先我们先看一下实现的效果

这是我数据库里的菜单数据可以看到是实现设定好的3级菜单

 后端我用的就是springboot+mabitis-plus,所做的操作也就是把数据库里的所有菜单查询出来并写到前端;

@RestController
@RequestMapping("/menu")
public class MenuController {
    @Autowired
    private MenuService menuService;
    @RequestMapping("/getMenus")
    public String getDeparts(){
        List<Menu> list = menuService.list();
        System.out.println(JSON.toJSONString(list));
        return JSON.toJSONString(list);
    }
}

前端的处理就是拿到所有菜单数据后对它们进行分级,分为一级,二级,和三级

<script>
    var vm=new Vue({
        el: "#vueDiv",
        data: {
            menu:'',
            one:[],
            two:[],
            three:[],
        },
        mounted() {
            this.getMenus();
        },
        methods:{
            getMenus(){
                axios.post('/menu/getMenus').then(res=>{
                    this.menu=res.data
                    for (let i = 0; i < this.menu.length; i++) {
                        if (this.menu[i].level==1){
                            this.one.push(this.menu[i])
                        }
                        if (this.menu[i].level==2){
                            this.two.push(this.menu[i])
                        }
                        if (this.menu[i].level==3){
                            this.three.push(this.menu[i])
                        }
                    }
                }).catch(function (e){
                    alert(e);
                });
            }
        }
    })
</script>

在html部分我采用的是v-for 和v-if

<div  id="vueDiv" style="height: 100%;" >
        <el-row class="tac">
            <el-col :span="24">
                <h5>导航菜单</h5>
                <el-menu
                        default-active="2"
                        class="el-menu-vertical-demo"
                        @open="handleOpen"
                        @close="handleClose">

                    <el-submenu v-for="(v,i) in one" index="i">
                        <template slot="title">
                            <span>{{v.menuName}}</span>
                        </template>
                        <el-menu-item-group v-for="(v1,i) in two" v-if="v1.parentId==v.id">
                            <template slot="title">{{v1.menuName}}</template>
                            <el-menu-item v-for="(v2,i) in three" v-if="v1.id==v2.parentId">{{v2.menuName}}</el-menu-item>
                        </el-menu-item-group>
                    </el-submenu>

                </el-menu>
            </el-col>
        </el-row>
</div>

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值