vue中侧边导航栏组件实现

Posted 小生不才

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vue中侧边导航栏组件实现相关的知识,希望对你有一定的参考价值。

导航栏的实现

这是一个基于element-ui实现的导航栏组件,最多三层数据,我们为menu添加了router属性,导航栏会根据index跳转,我们可以为index赋值路由地址,这样就可以实现路由跳转了,我们用select方法记录了index(路由值),来实现对应路由的激活。

html

<template lang="html">
  <el-container>
    <el-aside >
      <el-menu :default-active="defaultActive" @select="handleSelect" router>
        <template v-for="(aside, index) in asides">
          <!-- 一级菜单(有子菜单)-->
          <el-submenu
            v-if="aside.children && aside.children.length !== 0"
            :index="aside.path || index.toString()"
            :key="index"
          >
            <template slot="title">
              <span class="icon"></span>
              <span>{{ aside.title }}</span>
            </template>
            <!-- 遍历二级菜单容器 -->
            <div v-for="(child, order) in aside.children" :key="order">
              <!-- 判断二级菜单(没有三级菜单)-->
              <el-menu-item
                v-if="!child.children"
                :index="child.path"
                :key="index + \'-\' + order"
              >
                {{ child.title }}
              </el-menu-item>
              <!-- 判断二级菜单(有三级菜单)-->
              <el-submenu v-else :index="child.title">
                <template slot="title">
                  <span>{{ child.title }}</span>
                </template>
                <el-menu-item
                  v-for="(childs, orders) in child.children"
                  :index="childs.path"
                  :key="index + \'-\' + order + \'-\' + orders"
                >
                  {{ childs.title }}
                </el-menu-item>
              </el-submenu>
            </div>
          </el-submenu>
          <!-- 一级菜单(无子菜单)-->
          <el-menu-item
            v-else
            :index="aside.path || index.toString()"
            :key="index"
          >
            <span class="icon"></span>
            {{ aside.title }}
          </el-menu-item>
        </template>
      </el-menu>
    </el-aside>
  </el-container>
</template>

js

<script>
export default {
  name: \'Aside\',
  data() {
    return {
      defaultActive:
        window.localStorage.getItem(\'activePath\') || \'/myprojiectlist\', // 对应路由激活导航栏导航,默认/myprojiectlist路由
      asides: [
        {
          title: \'项目申报\',
          children: [
            {
              title: \'省级年度重大工业项目\',
              path: \'/myprojiectlist\',
            },
            {
              title: \'3000万元以上工业项目\',
              path: \'/FiveThousandIndustries\',
            },
            {
              title: \'已取得国家、省资金支持项目\',
              children: [
                {
                  title: \'国家-工业强基\',
                  path: \'/Nationalprojectlist\',
                },
                {
                  title: \'国家-技术改造\',
                  path: \'/Provincialproject\',
                },
              ],
            },
            {
              title: \'5000万元以上储备项目\',
              path: \'/Provincereservelist\',
            },
          ],
        },
        {
          title: \'项目进度\',
          path: \'/fillInProgress\',
        },
        {
          title: \'我的咨询\',
          path: \'/Consulting\',
        },
      ],
    }
  },

  methods: {
    handleSelect(key, path) {
      console.log(key, path)
      window.localStorage.setItem(\'activePath\', key) // 用于记录激活的导航
    },
  },
}
</script>

以上是关于vue中侧边导航栏组件实现的主要内容,如果未能解决你的问题,请参考以下文章

vue+element 后台管理系统-折叠侧边导航栏

vue 导航栏状态即时更新

vue自适应导航栏

h5之vue自定义底部导航栏

怎么用vue.js实现一个二级导航栏

在Vue 3中单击路由器链接时如何在不重新加载页面的情况下切换侧边栏