vue之ele左侧菜单(递归菜单)

vue之ele左侧菜单(递归菜单)

在这里插入图片描述
在这里插入图片描述

Layout.vue

<template>
  <el-container style="height: 100%; width: 100%">
    <Silder />
    <!-- <el-aside width="200px">Aside</el-aside> -->
    <el-container>
      <el-header>Header</el-header>
      <el-main
        :style="{
    
    
          margin: '24px 16px',
          padding: '24px',
          background: '#fff',
          minHeight: '280px'
        }"
        >Main</el-main
      >
    </el-container>
  </el-container>
</template>

<script>
import Silder from "./childCom/silder/Silder.vue";
export default {
    
    
  name: "Layout",
  components: {
    
    
    Silder
  },
  data() {
    
    
    return {
    
    };
  },
  methods: {
    
    }
};
</script>
<style lang="scss" scoped></style>

Silder.vue

<template>
  <el-aside style="height: 100%; width:200px;" class="aside-wrap">
    <el-menu :default-openeds="['1', '3']">
      <childMenu :dataList="testData" />
    </el-menu>
  </el-aside>
</template>

<script>
import childMenu from "./tree/childMenu.vue";
export default {
    
    
  name: "Silder",
  components: {
    
    
    childMenu
  },
  data() {
    
    
    return {
    
    
      testData: [
        {
    
    
          id: "1",
          title: "首页"
        },
        {
    
    
          id: "2",
          title: "关于",
          child: [
            {
    
    
              id: "21",
              title: "关于1",
              child: [
                {
    
    
                  id: "211",
                  title: "关于11"
                },
                {
    
    
                  id: "212",
                  title: "关于12"
                }
              ]
            },
            {
    
    
              id: "22",
              title: "关于2"
            }
          ]
        },
        {
    
    
          id: "3",
          title: "用户",
          child: [
            {
    
    
              id: "31",
              title: "用户1",
              child: [
                {
    
    
                  id: "311",
                  title: "用户11"
                },
                {
    
    
                  id: "312",
                  title: "用户12"
                }
              ]
            },
            {
    
    
              id: "32",
              title: "用户2"
            }
          ]
        }
      ]
    };
  },
  methods: {
    
    }
};
</script>
<style lang="scss" scoped>
.aside-wrap {
    
    
  background-color: #001529;
  color: #fff;
}
</style>

childMenu.vue

<template>
  <div class="menu-tree">
    <label v-for="list in dataList" :key="list.id">
      <el-submenu :index="list.id" v-if="list.child">
        <template slot="title">
          <i class="el-icon-location" v-if="list.level"></i>
          <span>{
    
    {
    
     list.title }}</span>
        </template>
        <label>
          <child-menu :dataList="list.child"></child-menu>
        </label>
      </el-submenu>
      <el-menu-item v-else :index="list.index">
        <span slot="title">{
    
    {
    
     list.title }}</span>
      </el-menu-item>
    </label>
  </div>
</template>

<script>
export default {
    
    
  name: "childMenu",
  props: ["dataList"]
};
</script>

猜你喜欢

转载自blog.csdn.net/weixin_47409897/article/details/122442339