element多層導航菜單

很久沒寫博客了原因就是懶,

剛下班今天寫了個基於element導航菜單實現多層菜單(可以無限多層)

組件核心思想就是組件遞歸(這個有時候面試會問到)

可以看看這篇我寫的簡單文章《vue組件遞歸

然後就判斷children有沒有內容,沒內容就是選擇項嘛,內容就是父菜單

只提供最基礎實現功能各種回調可以參考element文檔去改,我只寫了主體

element導航菜單官方文檔:https://element.eleme.cn/2.0/#/zh-CN/component/menu

 

效果圖:

 

 

  // ====== 組件: ==================

<template>
  <div>
    <template v-for="(item,index) in list">
    <!-- 標題 -->
      <template v-if="item.children.length">
        <el-submenu :key="index" :index="item.index">
          <template :index="item.index" slot="title">
            <i :class="item.icon"></i>
            <span>{{item.name}}</span>
          </template>
          <el-menu-item-group>
            <sideBar :list="item.children"></sideBar>
          </el-menu-item-group>
        </el-submenu>
      </template>
    <!-- 選項 -->
      <template v-else>
        <el-menu-item :key="index" :index="item.index">
          <i :class="item.icon"></i>
          <span>{{item.name}}</span>
        </el-menu-item>
      </template>
    </template>
  </div>
</template>
<script>
export default {
  name: "sideBar",
  props: {
    list: Array
  }
};
</script>
<style></style>

 

 // ====== 調用: ==================

<!-- html調用 -->
<el-menu>
  <SideBar :list="sideBarData"></SideBar>
</el-menu>


// 這個是數據格式
sideBarData: [
  {
    name: "菜單1",
    index: "menu1",
    icon: "el-icon-menu",
    children: [
      {
        name: "菜單1-1",
        index: "menu1-1",
        icon: "el-icon-menu",
        children: [
          {
            name: "菜單1-1-1",
            index: "menu1-1-1",
            icon: "el-icon-menu",
            children: []
          },
          {
            name: "菜單1-1-2",
            index: "menu1-1-2",
            icon: "el-icon-menu",
            children: []
          }
        ]
      },
      {
        name: "菜單1-2",
        index: "menu1-2",
        icon: "el-icon-menu",
        children: []
      }
    ]
  },
  {
    name: "菜單2",
    index: "menu2",
    icon: "el-icon-document-copy",
    children: [
      {
        name: "數據集管理2",
        index: "dataset2",
        icon: "el-icon-document-copy",
        children: []
      },
    ]
  },
  {
    name: "菜單2",
    index: "menu3",
    icon: "el-icon-folder",
    children: []
  }
]

 

 補個截圖可能會好看好理解些:

 

 

最後推薦個文章也是寫“element多層導航菜單”不過這位大佬寫的比我詳細多了,

我寫的只是初級版幫助理解而已,進階的話看這篇文章是很好的:https://blog.csdn.net/qq_31126175/article/details/88824380

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章