首页 > 其他分享 >vue 动态加载路由,渲染左侧菜单栏

vue 动态加载路由,渲染左侧菜单栏

时间:2024-10-15 23:10:21浏览次数:6  
标签:vue 菜单栏 item meta 组件 路由

需求

我们在route文件中定义的路由是由子路由包裹进去的,它可能是无限级的。如何在vue的模板中渲染形成菜单栏。

如图:

 

解决方法

将菜单栏单独写成子组件(注意头部标签:element-plus中是el-menu)仍然在父组件中。将配置路由数据传入到子组件。子组件渲染一级路由。

一级路由再调用本身组件,从而递归的实现动态加载和无限级分类。

父组件代码

<el-menu
    class="el-menu-vertical"
    @open="handleOpen"
    @close="handleClose"
    background-color="$el-aside-background"
>
    <Menu :menuList="menuRoutes" />
</el-menu>

子组件代码

   <template v-for="(item, index) in menuList" :key="index">
        <!-- 一级路由 -->
        <template v-if="!item.children" >
            <el-menu-item v-if="!item.meta.isHidden" :index="item.path">
                <template #title>
                    <span>icon</span>&nbsp;{{ item.meta.title }}
                </template>
            </el-menu-item>
        </template>

        <!-- 有子路由,但是只有一个 -->
        <el-menu-item
            v-if="item.children && item.children.length == 1 && !item.meta.isHidden"
            :index="item.path"
        >
            <template #title>
                <span>{{ item.children[0].meta.title }}</span>
            </template>
        </el-menu-item>

        <!-- 有子路由,并且有多个,递归调用自己 -->
        <el-sub-menu
            :index="item.name"
            v-if="item.children && item.children.length > 1"
        >
            <template #title
                ><span>{{ item.meta.title }}</span></template
            >
            <!-- 注意:这个需要一个组件名,并将子路由数据传入自身组件中,组件名在下面的script标签中用vue2语法定义 -->
            <Menu :menuList="item.children" />
        </el-sub-menu>
    </template>

 

标签:vue,菜单栏,item,meta,组件,路由
From: https://www.cnblogs.com/yansunda/p/18468740

相关文章

  • 基于SpringBoot+Vue的高校线上心理咨询系统
    有源码,有文档,已上传,欢迎自行下载学习!项目背景本项目为:心理咨询系统,也可称为心理咨询室,高校心理咨询系统的开发意义在于提供便捷的心理咨询服务,帮助学生解决心理问题,提高心理健康水平。核心功能模块说明部分实体ER图案例源码下载学习:基于SpringBoot+Vue的高校线上......
  • 公交线路查询系统|基于SprinBoot+vue公交线路查询系统(源码+数据库+文档)
    公交线路查询系统目录基于SprinBoot+vue公交线路查询系统一、前言二、系统设计三、系统功能设计 四、数据库设计 五、核心代码 六、论文参考七、最新计算机毕设选题推荐八、源码获取:博主介绍:✌️大厂码农|毕设布道师,阿里云开发社区乘风者计划专家博主,CSDN平台Ja......
  • 景区民宿预约|基于SprinBoot+vue景区民宿预约系统(源码+数据库+文档)
    景区民宿预约系统:目录基于SprinBoot+vue景区民宿预约系统一、前言二、系统设计三、系统功能设计 四、界面设计 五、核心代码 六、论文参考七、最新计算机毕设选题推荐八、源码获取:博主介绍:✌️大厂码农|毕设布道师,阿里云开发社区乘风者计划专家博主,CSDN平台Java......
  • vue3使用pinia仓库解构赋值响应式丢失的解决方式
    代码storeimport{defineStore}from"pinia";import{ref}from"vue";exportconstuseMyTestStore=defineStore('mytestStore',()=>{//stateconstcount=ref(0);constcount2=ref(1);constincrement2......
  • Vue3 + Openlayers10示例 台风轨迹和台风圈
    前言假装已经完成了vue3和Openlayers10开发环境的搭建,如果有需要,可搜索vue+Openlayers环境搭建的相关文章。本示例基于Vue3和Openlayers10的环境,实现台风轨迹和台风圈的效果。一、安装插件安装Element-plus插件,其实只在台风列表的地方用到了el-checkbox,可根据实际需......
  • 基于django+vue+Vue基于MD5社区老年人信息管理系统【开题报告+程序+论文】-计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容选题背景随着全球老龄化趋势的加剧,社区老年人管理成为了一个亟待解决的问题。当前,关于老年人信息管理的研究主要集中在医疗健康、社会保障等单一领......
  • 基于django+vue+Vue基于J2EE的电子商务库存管理系统【开题报告+程序+论文】-计算机毕
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容选题背景电子商务的迅猛发展推动了库存管理系统的不断升级与优化。当前,关于库存管理系统的研究主要集中在自动化、智能化以及大数据应用等方面,但这......
  • 基于django+vue+Vue基于html小说网站的设计与实现【开题报告+程序+论文】-计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容选题背景随着互联网技术的快速发展,网络文学已成为当代文化消费的重要组成部分。众多小说网站如雨后春笋般涌现,为读者提供了丰富的阅读资源。然而,关......
  • 基于SpringBoot+Vue大学生体质测试管理系统
    作者:计算机学长阿伟开发技术:SpringBoot、SSM、Vue、MySQL、ElementUI等,“文末源码”。系统展示【2024最新】基于Java+SpringBoot+Vue+MySQL的大学生体质测试管理系统,前后端分离。开发语言:Java数据库:MySQL技术:SpringBoot、Vue、MybaitsPlus、ELementUI工具:IDEA/Ecilpse......
  • 基于django+vue+Vue基于MD5加密的电子书籍在线阅读系统设计与实现【开题报告+程序+论
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容选题背景随着信息技术的飞速发展,电子书籍已成为现代人获取知识、阅读学习的重要方式之一。关于电子书籍在线阅读系统的研究,现有研究主要以技术实现......