elementui封装的菜单组件

1、menu子组件

<template>
  <div>
    <template v-for="(item) in menuList">
      <el-menu-item v-if="item.childList.length === 0"
                    :index="`${item.route}`"
                    :key="item.id">
        <i class="el-icon-menu"></i>
        <span slot="title">{{item.name}}</span>
      </el-menu-item>
      <el-submenu v-if="item.childList.length > 0"
                  :key="item.id"
                  :index="`${item.id}`">
        <template slot="title">
          <i class="el-icon-location"></i>
          <span slot="title">{{item.name}}</span>
        </template>
        <el-menu-item v-for="i in item.childList"
                      :key="i.id"
                      :index="`/${item.icon}${i.route}`">
          <span slot="title">{{i.name}}</span>
        </el-menu-item>
      </el-submenu>
    </template>
  </div>
</template>

<script>
export default {
  name: 'EMenu',
  props: {
    menuList: {
      type: Array,
      default: []
    }
  },
  created () {
    console.log(this.menuList)
  }

}
</script>

<style>
</style>

2、父组件调用,这里激活了vue-router 的模式,启用该模式会在激活导航时以 index 作为 path 进行路由跳转

:router="true"

<el-aside width="200px">
          <el-menu :default-active="activeRoute"
                   :unique-opened="true"
                   :router="true"
                   class="el-menu-vertical-demo">
            <e-menu :menuList="menuList"></e-menu>
          </el-menu>
        </el-aside>
....
data(){
return{
activeRoute: ''
},
menuList: [...]
}

我这里因为后台返回参数不同,没有实现组件自己调用自己,如果是多级菜单的话,可以实现递归调用

3、menu子组件

<template>
  <div>
    <template v-for="(item) in menuList">
      <el-menu-item v-if="item.childList.length === 0"
                    :index="`${item.route}`"
                    :key="item.id">
        <i class="el-icon-menu"></i>
        <span slot="title">{{item.name}}</span>
      </el-menu-item>
      <el-submenu v-if="item.childList.length > 0"
                  :key="item.id"
                  :index="`${item.id}`">
        <template slot="title">
          <i class="el-icon-location"></i>
          <span slot="title">{{item.name}}</span>
        </template>
        <e-menu :menuList="item.childList"></e-menu>
      </el-submenu>
    </template>
  </div>
</template>

<script>
export default {
  name: 'EMenu',
  props: {
    menuList: {
      type: Array,
      default: []
    }
  },
  created () {
    console.log(this.menuList)
  }

}
</script>

<style>
</style>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LLL_LH

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值