今天同事封装一个导航栏的组件,使用的 Element UI 的 NavMenu 组件。
遇到一个问题,如果菜单没有下拉是 <el-menu-item /> 标签,而有下拉的是 <el-submenu /> 标签。
在循环遍历的时候就出了问题,必须要判断一下是否有二级菜单,并区分展示。
使用 div 包裹,改变组件的标签结果,就会导致报错,无法正常显示。
解决方法:
套一个 template 标签做 v-for 遍历,然后判断是否有二级菜单,并给 <el-submenu /> 或 <el-menu-item /> 标签 :key="key" 属性。
<el-menu
:default-active="activeIndex"
class="el-menu-demo"
mode="horizontal"
>
<template v-for="item in NavigateItem">
<el-submenu v-if="item.items.length" :index="item.key" :key="item.key">
<template slot="title">
{{ item.title }}
</template>
<el-menu-item
v-for="(items, key) in item.items"
:key="key"
:index="items.key"
>
{{ items.title }}
</el-menu-item>
</el-submenu>
<el-menu-item v-else :index="item.key" :key="item.key">
{{ item.title }}
</el-menu-item>
</template>
</el-menu>
数据部分:
NavigateItem: [
{
title: "首页",
key: "1",
path: "",
items: [],
},
{
title: "找人才",
key: "2",
path: "",
items: [
{
title: "选项1",
key: "2-1",
path: "",
},
{
title: "选项2",
key: "2-2",
path: "",
},
],
},
{
title: "找资金",
key: "3",
path: "",
items: [
{
title: "选项1",
key: "3-1",
path: "",
},
{
title: "选项2",
key: "3-2",
path: "",
},
],
},
{
title: "提身价",
key: "4",
path: "",
items: [
{
title: "选项1",
key: "4-1",
path: "",
},
{
title: "选项2",
key: "4-2",
path: "",
},
],
},
],
未经允许不得转载:w3h5 » Element UI导航菜单(NavMenu),动态多级菜单实现
原创文章,作者:1402239773,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/228450.html