elemen导航实现三级菜单详细(附代码)

HTML部分
 

<el-menu router :default-active="$route.path" class="el-menu-vertical-demo" @open="handleOpen"
    @close="handleClose" style="text-align:left" active-text-color="#0071DB" :router="true"
    background-color="#fff" text-color="#000" :unique-opened="true">
    <div v-for="(item,index) in asideArr" :key="index">
       <!-- 一级菜单(没有子级菜单)-->
       <el-menu-item :index="item.path" v-if="!item.children">{{item.title}}</el-menu-item>
       <!-- 一级菜单(有子菜单)-->
        <el-submenu :index="item.path" v-else>
           <template slot="title">{{item.title}}</template>
             <!-- 遍历二级菜单 -->
              <div v-for="(i,index) in item.children" :key="index">
                 <!-- 二级菜单(没有三级菜单)-->
                 <el-menu-item :index="i.path" v-if="!i.children">{{i.title}}</el-menu-item>
                 <!-- 二级菜单(有三级菜单)-->
                   <el-submenu :index="i.path" v-if="i.children">
                      <template slot="title">{{i.title}}</template>
                        <el-menu-item :index="j.path" v-for="(j,index) in i.children" :key="index">{{j.title}}</el-menu-item>
                   </el-submenu>
              </div> 
             </el-submenu>
      </div>
 </el-menu>

表格数据:

asideArr: [
            {
              path: '/onekeyCheckin',
              title: '一键入住',
              icon: 'el-icon-edit',
              children: [
                {
                  path: '/chief_representative',
                  title: '首席代表',
                  icon: 'icon-rongqi',
                },
                {
                  path: '/business_teacher',
                  title: '业务老师',
                  icon: 'icon-rongqi', 
                }
              ]
            },
          ]


//导航方法
methods: {
      handleOpen(key, keyPath) {
          console.log(key, keyPath);
      },
      handleClose(key, keyPath) {
          console.log(key, keyPath);
      }
  }

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Element Plus 是基于 Vue.js 2.0 的一套UI组件库,提供了丰富的 UI 组件,其中包括了菜单组件(Menu)。实现三级菜单的动态填充可以分为以下几个步骤: 1. 定义菜单数据结构 首先,需要定义菜单的数据结构,可以采用 JSON 格式。例如: ```javascript [{ "name": "Home", "path": "/home", "icon": "el-icon-house", "children": [{ "name": "Dashboard", "path": "/home/dashboard", "icon": "el-icon-data-board" }] }, { "name": "Product", "path": "/product", "icon": "el-icon-box", "children": [{ "name": "List", "path": "/product/list", "icon": "el-icon-s-grid" }, { "name": "Add", "path": "/product/add", "icon": "el-icon-circle-plus-outline" }] }] ``` 2. 渲染菜单组件 使用 `el-menu` 组件渲染菜单,需要设置 `default-active` 属性为当前选中的菜单项的 `path` 值。例如: ```html <el-menu :default-active="$route.path" class="el-menu-vertical-demo"> <template v-for="menu in menus"> <el-submenu v-if="menu.children && menu.children.length > 0" :key="menu.name" :index="menu.path"> <template slot="title"> <i :class="menu.icon"></i> <span slot="title">{{ menu.name }}</span> </template> <template v-for="submenu in menu.children"> <el-menu-item :key="submenu.path" :index="submenu.path">{{ submenu.name }}</el-menu-item> </template> </el-submenu> <el-menu-item v-else :key="menu.path" :index="menu.path"> <i :class="menu.icon"></i> <span>{{ menu.name }}</span> </el-menu-item> </template> </el-menu> ``` 3. 动态填充菜单数据 在页面加载时,可以从后台获取菜单数据,并将其赋值给 `menus` 变量。例如: ```javascript export default { data() { return { menus: [] }; }, mounted() { // 从后台获取菜单数据 axios.get('/api/menus').then(response => { this.menus = response.data; }).catch(error => { console.error(error); }); } } ``` 这样,就可以通过动态填充菜单数据来实现三级菜单的渲染了。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值