Menu 菜单

快速的数据化配置一个递归菜单,常用于后台管理系统中。

基础使用

传递 menus 生成快速生成一个菜单。

绑定icon 不仅支持图标名称,也可以支持常规的图片。

点击查看代码
<template>
  <div class="demo">
    <ElRadioGroup v-model="mode" style="margin: 0px 20px 20px 0px">
      <ElRadioButton value="vertical">竖向菜单</ElRadioButton>
      <ElRadioButton value="horizontal">横向菜单</ElRadioButton>
    </ElRadioGroup>

    <ElRadioGroup v-model="isCollapse">
      <ElRadioButton :value="false">展开</ElRadioButton>
      <ElRadioButton :value="true">收起</ElRadioButton>
    </ElRadioGroup>

    <AgelMenu class="demo-menu" :mode="mode" :menus="menuData" :collapse="isCollapse" @select="select"> </AgelMenu>
    <ElMenu :model="mode"></ElMenu>
  </div>
</template>

<script setup lang="ts">
import { ref } from 'vue'
import { ElMessage } from 'element-plus'

const mode = ref<'vertical' | 'horizontal'>('vertical')
const isCollapse = ref(false)
const menuData = [
  {
    title: '1 级菜单',
    icon: 'https://element-plus.org/images/element-plus-logo.svg',
    index: '/home-1',
    children: [
      {
        title: '1-1 菜单',
        icon: 'Menu',
        index: '/home-1-1'
      },
      {
        title: '1-2 菜单',
        icon: 'Menu',
        index: '/home-1-2',
        disabled: true
      },
      {
        title: '1-3 菜单',
        icon: 'Menu',
        index: '/home-1-2',
        hidden: true
      }
    ]
  },
  ...Array.from({ length: 5 }).map((v, i) => {
    return {
      title: i + 2 + '级菜单',
      icon: 'Menu',
      index: '/home-' + (i + 2)
    }
  })
]

function select(index: string, indexPath: string[]) {
  ElMessage.success('选中菜单' + index + indexPath)
}
</script>
<style></style>

属性

属性类型默认值说明
menusMenuItemProps[]-菜单配置
......--ElMenu 属性open in new window
属性类型默认值说明
titlestring-菜单名称,必须
indexindex-路由地址,必须
iconstring-菜单图标或图片地址
disabledboolean-是否禁用
hiddenboolean-是否隐藏
childrenMenuItemProps[]-菜单配置
......--ElSubMenu 属性open in new window
Last Updated:
Contributors: agrass, liujianfeng