element ui菜单导航栏的动态创建

<template>
  <div class="dropList">
    <el-radio-group v-model="isCollapse" style="margin-bottom: 20px">
      <el-radio-button :label="false">展开</el-radio-button>
      <el-radio-button :label="true">收起</el-radio-button>
    </el-radio-group>
    <el-menu
      class="el-menu-vertical-demo"
      :collapse="isCollapse"
      v-for="item in navMenu"
      :key="item.index"
    >
      <el-submenu :index="item.index" v-if="item.childs">
        <template slot="title">
          <i :class="item.icon"></i>
          <span slot="title">{{ item.alias }}</span>
        </template>
        <template v-for="item1 in item.childs">
          <el-submenu v-if="item1.childs" :key="item1.id" :index="item1.index">
            <template slot="title">
              <span slot="title">{{ item1.alias }}</span>
            </template>
            <template v-for="item2 in item1.childs">
              <el-submenu
                v-if="item2.childs"
                :key="item2.id"
                :index="item2.index"
              >
                <template slot="title">
                  <span slot="title">{{ item2.alias }}</span>
                </template>
                <template v-for="item3 in item2.childs">
                   <el-menu-item v-if="item3.childs==null" :key="item3.id" :index="item3.index">             {{item3.alias}}
                   </el-menu-item>
                </template>
              </el-submenu>
            </template>
          </el-submenu>
        </template>
        <template v-for="item1 in item.childs">
          <el-menu-item
            v-if="item1.childs == null"
            :key="item1.id"
            :index="item1.index"
          >
            <span>{{ item1.alias }}</span>
          </el-menu-item>
        </template>
      </el-submenu>
      <el-menu-item
        v-if="item.childs == null"
        :key="item.id"
        :index="item.index"
      >
        <i :class="item.icon"></i>
        <span>{{ item.alias }}</span>
      </el-menu-item>
    </el-menu>
  </div>
</template>
<script>
export default {
  name: "",
  data() {
    return {
      isCollapse: true,
      navMenu: [ 
        {
          id: "id13",
          index: "id13",
          icon: "el-icon-s-tools",
          alias: "精准扶贫",
          childs: [],
        },
        {
          id: "id14",
          index: "id14",
          icon: "el-icon-s-order",
          alias: "返贫监测预警",
        },
      ],
    };
  },
</script>

数据处理

     for (var i in secondList) {
            var temp = {
              id: "id2"+i,
              index: "id2"+i,
              icon: "",
              alias: secondList[i],
              childs: [],
            };
            secondData.push(temp);
          }
          var temps = secondData[0]; 
          for (var i in village_name) {
            temps.childs.push({
              id: "id3"+i,
              index: "id3"+i,
              icon: "",
              alias: village_name[i],
              childs: [],
            });  
          }

由于一级菜单数据不是从后台获取的,直接写上(如果是从后台获取的,只需要定义一个空数组即可),二三四级数据从后台获取后处理成需要的格式。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Element UI 是一套构建于 Vue.js 之上的组件库,提供了丰富的原生的 UI 组件以及易用的功能。在 Element UI 中开发左侧导航栏加右侧表格布局通常涉及到几个关键步骤: ### 开发步骤 #### 1. 设置项目环境 首先需要确保安装了 Node.js 和 npm 或 yarn,然后创建一个新的 Vue.js 项目或是直接基于已有的项目。 ```bash vue create my-project cd my-project ``` 接着,在项目中安装 Element UI: ```bash npm install element-ui # 或者使用 yarn 安装 yarn add element-ui ``` 记得在 `main.js` 文件中引入并注册 Element UI: ```javascript import 'element-ui/lib/theme-chalk/index.css'; import ElementUI from 'element-ui'; import Vue from 'vue'; Vue.use(ElementUI); ``` #### 2. 设计布局 为了实现左侧导航栏和右侧表格的布局,可以使用 Element UI 的 `el-menu` 和 `el-table` 组件。下面是一个简单的示例结构: ```html <template> <div id="app"> <!-- 左侧导航 --> <el-menu mode="horizontal" background-color="#545c64" text-color="#fff" active-text-color="#ffd04b"> <el-menu-item index="1">菜单项1</el-menu-item> <el-menu-item index="2">菜单项2</el-menu-item> <el-submenu index="3"> 子菜单 <el-menu-item slot="title">子菜单项1</el-menu-item> <el-menu-item index="3-1">子菜单项1-1</el-menu-item> <el-menu-item index="3-2">子菜单项1-2</el-menu-item> </el-submenu> </el-menu> <!-- 右侧表格 --> <el-table :data="tableData" style="width: 100%"> <el-table-column prop="date" label="日期" width="180"></el-table-column> <el-table-column prop="name" label="姓名" width="180"></el-table-column> <el-table-column prop="address" label="地址"></el-table-column> </el-table> </div> </template> <script> export default { data() { return { tableData: [ { date: '2016-05-02', name: '王小虎', address: '上海市普陀区金沙江路 1518 弄' }, { date: '2016-05-04', name: '王小虎', address: '上海市普陀区金沙江路 1517 弄' }, // 其他数据... ], }; }, }; </script> ``` ### 相关问题: 1. **如何自定义 Element UI 的主题颜色?** 通过修改全局样式或局部组件的样式规则来自定义主题色。例如,在 `style.css` 文件中添加以下代码: ```css .el-menu { background-color: #545c64 !important; } ``` 2. **如何在右侧表格中添加过滤功能?** 可以利用 Element UI 提供的数据筛选功能或外部插件如 `vxe-table` 来增强搜索、排序等功能。 3. **如果左侧导航需要动态加载子菜单怎么办?** 使用 Vue 的懒加载技术结合路由配置来实现动态加载,当用户点击某一级菜单时才加载对应的子菜单内容。这需要对 Vue Router 进行相应的设置,并编写动态加载的组件代码。 --- 以上就是关于使用 Element UI 开发包含左侧导航栏及右侧表格布局的基本步骤和一些常见问题的回答。希望对你有所帮助!
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值