vue-element导航菜单组件,过滤有无子菜单,分别渲染

<template>
  <el-menu
    :default-active="title"
    class="el-menu-vertical-demo"
    background-color="#545c64"
    text-color="#fff"
    active-text-color="#ffd04b"
    :collapse="showcollapse"
    unique-opened
  >
  //如果含有子菜单children,渲染hanChildren
    <el-submenu
      :index="item.menuName"
      v-for="item in hanChildren"
      :key="item.menuCode"
    >
      <template slot="title">
        <span>{{ item.menuName }}</span>
      </template>
      <el-menu-item-group>
        <el-menu-item
          @click="gopath(subitem)"
          v-for="(subitem, index) in item.children"
          :key="index"
          :index="subitem.menuName"
          >{{ subitem.menuName }}</el-menu-item
        >
      </el-menu-item-group>
    </el-submenu>
     //如果没有子菜单children,渲染noChildren
    <el-menu-item
      :index="item.menuName"
      v-for="(item, index) in noChildren"
      :key="index"
      @click="gopath(item)"
    >
      <span>{{ item.menuName }}</span>
    </el-menu-item>
  </el-menu>
</template>
<script>
export default {
//过滤数据navList
  computed: {
    noChildren() {
      return this.navList.filter(item => !item.children);
    },
    hanChildren() {
      return this.navList.filter(item => item.children);
    }
  },
  data() {
	    return {
	      navList: [{menuName:'菜单1'},{menuName:'菜单2'},{menuName:'菜单3',children:[{menuName:'菜单3-1'},{menuName:'菜单3-2'}]}],
	      }
      },
      methods:{
	      //菜单点击事件
	      gopath(){}
		}
     }
     </script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值