Vue 侧边栏导航栏 el-menu单个item和多个item

news2025/3/12 22:38:39

在固钉的下面去写菜单导航栏。

                <el-menu

                   class="aside-menu"

                   router

                   :default-active="$route.path"

                   :collapse="isCollapse"

                   background-color="#131b27"

                   text-color="#bfcbd9"

                   active-text-color="#20a0ff"

:default-active="$route.path":   当前激活菜单的index,栏目与path做了匹配就拿到了path然后激活对应的item,当前打开了哪个页面,那么就会去找item对应的index

    {

        path: '/home',

        component: Layout,

        children: [

            {

                path: '/home',

                name: '概览',

                icon: 'odometer',

                meta: {title: '概览'},

                component: ()=>import('@/views/home/Home.vue'),

            }

        ]

    },

(1)先获取到所有的路由规则, 在routers里面

<template>
    <div style="height:100vh;width:100vw">
        <el-container style="height:100%;width:100%">
            <el-aside class="aside" :width="asideWidth"> 
                <el-affix class="aside-affix" :z-index="1200">
                    <div>
                        <el-image class="logo-image" :src="logo">

                        </el-image>
                        <span :class="[isCollapse ? is-collapse : '']">
                          <span  class="logo-name">Kubernetes</span>
                        </span>
                    </div>                  
                </el-affix>   
                <!--侧边导航栏-->
                <el-menu
                   class="aside-menu"
                   router
                   :default-active="$route.path"
                   :collapse="isCollapse"
                   background-color="#131b27"
                   text-color="#bfcbd9"
                   active-text-color="#20a0ff"
                >
                <!--拆解路由规则,生成导航栏-->
                <!--1.获取所有的;路由规则-->
                </el-menu>
            </el-aside >
              
            <el-container>
               <el-header style="background-color:#b3c0d1">123</el-header>
               <el-main>
                   <router-view></router-view>
               </el-main>
               <el-footer>123</el-footer>
            </el-container>
        </el-container>
    </div>

</template>


<script>
//这里添加了一个属性routers,要去获取路由规则
import { useRouter } from 'vue-router';
   export default({
      data() {
         return {
            logo: require('../assets/k8s.png'),
            asideWidth: '200px',
            isCollapse: false,
            routers: []
         }
      },
      mounted() {
          //获取router中的所有路由规则
          this.routers = useRouter().options.routes
          console.log(this.routers)
         }
   })
</script>

(2)循环item

<!--2.for循环路由规则并且拆解-->
                    
                    <template v-for="menu in routers" :key="menu">
                       <!--处理2长度为1的情况,如概要,什么时候展示呢?存在并且长度为1
                        判定为1了,才会走到下面部分,所以数组可以直接使用0-->
                          <el-menu-item
                              class="aside-menu-item"
                              v-if="menu.children && menu.children.length == 1"
                              :index="menu.children[0].path">
                      <!--下面就是要去做具体的展示  图标和名字-->
                          <el-icon>
                            <component :is="menu.children[0].icon">
                            </component>
                          </el-icon>

                          <template #title>
                             {{ menu.children[0].name }}
                          </template>
                          
                          </el-menu-item>

template在vue里面是什么概念?它类似<div>,但是template不带任何的样式,它是for循环或者要去包裹一层东西,但是包裹不让带任何样式可以使用template。所以这个时候就可以使用template。卡片插槽其实用的也是template一样的逻辑。

:index="menu.children[0].path    要使用router模式的时候,要将其path传到index里面,这样每次点一个路由才会找到对应的path直接进去。如果不是router模式的话是没有用的,所以el-menu里面加了一个router。相当于帮我们封装了一层,帮我们跳转。

<el-icon>是vue的组件element,里面包了一层<component>,这是vue的能力,当时使用到哪个组件,那这里面is是一个动态值。

                          <el-icon>
                             <component :is="menu.children[0].icon">
                             </component>
                          </el-icon>

item名字要加上template,因为是以插槽的方式去实现的。

                          <template #title>
                             {{ menu.children[0].name }}
                          </template>

到这里单个item就解决了。代码如下:

<template>
    <div style="height:100vh;width:100vw">
        <el-container style="height:100%;width:100%">
            <el-aside class="aside" :width="asideWidth"> 
                <el-affix class="aside-affix" :z-index="1200">
                    <div>
                        <el-image class="logo-image" :src="logo">

                        </el-image>
                        <span :class="[isCollapse ? is-collapse : '']">
                          <span  class="logo-name">Kubernetes</span>
                        </span>
                    </div>                  
                </el-affix>   
                <!--侧边导航栏-->
                <el-menu
                   class="aside-menu"
                   router
                   :default-active="$route.path"
                   :collapse="isCollapse"
                   background-color="#131b27"
                   text-color="#bfcbd9"
                   active-text-color="#20a0ff"
                >
                <!--拆解路由规则,生成导航栏-->
                <!--1.获取所有的;路由规则-->
                <!--2.for循环路由规则并且拆解-->
                    
                    <template v-for="menu in routers" :key="menu">
                       <!--处理2长度为1的情况,如概要,什么时候展示呢?存在并且长度为1
                        判定为1了,才会走到下面部分,所以数组可以直接使用0-->
                          <el-menu-item
                              class="aside-menu-item"
                              v-if="menu.children && menu.children.length == 1"
                              :index="menu.children[0].path">
                      <!--下面就是要去做具体的展示  图标和名字-->
                          <el-icon>
                            <component :is="menu.children[0].icon">
                            </component>
                          </el-icon>

                          <template #title>
                             {{ menu.children[0].name }}
                          </template>
                          
                          </el-menu-item>
                    </template>
                </el-menu>
            </el-aside >
              
            <el-container>
               <el-header style="background-color:#b3c0d1">123</el-header>
               <el-main>
                   <router-view></router-view>
               </el-main>
               <el-footer>123</el-footer>
            </el-container>
        </el-container>
    </div>

</template>


<script>
//这里添加了一个属性routers,要去获取路由规则
import { useRouter } from 'vue-router';
   export default({
      data() {
         return {
            logo: require('../assets/k8s.png'),
            asideWidth: '200px',
            isCollapse: false,
            routers: []
         }
      },
      mounted() {
          //获取router中的所有路由规则
          this.routers = useRouter().options.routes
          console.log(this.routers)
         }
   })
</script>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2313962.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Unity Dots从入门到精通之 Prefab引用 转 实体引用

文章目录 前言安装 DOTS 包实体引用Authoring 前言 DOTS&#xff08;面向数据的技术堆栈&#xff09;是一套由 Unity 提供支持的技术&#xff0c;用于提供高性能游戏开发解决方案&#xff0c;特别适合需要处理大量数据的游戏&#xff0c;例如大型开放世界游戏。 本文讲解我在…

无人机避障——XTDrone中运行VINS-Fusion+Ego-planner进行路径规划

本文聚焦于无人机避障技术领域的经典方案&#xff0c;重点探讨视觉双目VINS-Fusion建图与Ego-planner路径规划的组合应用。通过视觉双目VINS-Fusion实现精准的环境建图与自身定位&#xff0c;结合Ego-planner的高效路径规划能力&#xff0c;使无人机在复杂环境中实现自主避障飞…

【沐渥科技】氮气柜日常如何维护?

氮气柜的维护是确保其长期稳定运行、延长使用寿命和保持环境控制精度的关键。以下是沐渥氮气柜的日常维护和定期保养指南&#xff1a; 一、日常维护 柜体清洁 定期用软布擦拭柜体表面和内部&#xff0c;避免灰尘堆积。避免使用腐蚀性清洁剂&#xff0c;防止损伤密封条或传感器。…

MATLAB 控制系统设计与仿真 - 24

PID 控制器分析- 控制器的形式 连续控制器的结构&#xff1a; 为滤波时间常数&#xff0c;这类PID控制器在MATLAB系统控制工具箱称为并联PID控制器&#xff0c;可由MATLAB提供的pid函数直接输入&#xff0c;格式为&#xff1a; 其他类型的控制器也可以由该函数直接输入&#x…

linux(权限)

sudo 主要用来短暂的提权 权限 就是 >角色目标属性 这里面的角色就是---拥有者----所属组----other 所属组的目的&#xff1f; 更细化的管理 chmod 就是修改权限制 我们要是想要切换到体育的账号&#xff0c;我们可以去看一下有几个账号,我…

《OpenCV》—— dlib(换脸操作)

文章目录 dlib换脸介绍仿射变换在 dlib 换脸中的应用 换脸操作 dlib换脸介绍 dlib 换脸是基于 dlib 库实现的一种人脸替换技术&#xff0c;以下是关于它的详细介绍&#xff1a; 原理 人脸检测&#xff1a;dlib 库中包含先进的人脸检测器&#xff0c;如基于 HOG&#xff08;方向…

修改Flutter项目使用的JAVA版本

使用Android studio开发Flutter过程中&#xff0c;会默认使用Android studio自带的JDK。因为新版Android studio中的JDK版本过高&#xff0c;导致项目编译时总是无法完成&#xff0c;报【 unsupported class file major version 65】错误&#xff0c;如下&#xff1a; 解决这个…

虚拟dom的diff中的双端比较算法

‌双端比较算法是Vue中用于高效比较新旧VNode子节点的一种策略‌。该算法的核心思想是&#xff0c;通过从新旧VNode子节点的两端开始比较&#xff0c;逐步向中间靠拢&#xff0c;以找到最小的差异并据此更新DOM。以下是双端比较算法的大致流程&#xff1a; ‌初始化指针‌&…

VMware安装Windows server 2016

1、新建虚拟机&#xff0c;选择自定义模式 2、选择兼容性 4、命名虚拟机 5、固件类型 EFI 虚拟磁盘类型&#xff0c;不同电脑推荐的类型不同&#xff0c;用默认的就行 删除声卡和打印机 检查网络配置 选择本地的Windows server 2016的系统镜像&#xff0c;系统镜像可以去Window…

HippoRAG 2 原理精读

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 整体流程离线索引阶段在线检索和问答阶段 总结 整体流程 从上图可以看出&#xff0c;整个流程分为两个阶段 1、离线索引阶段 2、在线检索和问答阶段 离线索引阶段…

三:FFMPEG拉流读取模块的讲解

FFMPEG拉流读取模块在远程监控项目最核心的作用是读取UVC摄像头传输的H264码流&#xff0c;并对其码流进行帧的提取&#xff0c;提取完成之后则把数据传输到VDEC解码模块进行解码。而在我们这个项目中&#xff0c;UVC推流的功能由FFMPEG的命令完成。 FFMPEG拉流读取模块的API…

《苍穹外卖》SpringBoot后端开发项目核心知识点与常见问题整理(DAY1 to DAY3)

目录 一、在本地部署并启动Nginx服务1. 解压Nginx压缩包2. 启动Nginx服务3. 验证Nginx是否启动成功&#xff1a; 二、导入接口文档1. 黑马程序员提供的YApi平台2. YApi Pro平台3. 推荐工具&#xff1a;Apifox 三、Swagger1. 常用注解1.1 Api与ApiModel1.2 ApiModelProperty与Ap…

QT系列教程(20) Qt 项目视图便捷类

视频连接 https://www.bilibili.com/video/BV1XY41127t3/?vd_source8be9e83424c2ed2c9b2a3ed1d01385e9 Qt项目视图便捷类 Qt项目视图提供了一些便捷类&#xff0c;包括QListWidget, QTableWidget&#xff0c; QTreeWidget等。我们分别介绍这几个便捷类。 我们先创建一个Qt …

动态扩缩容引发的JVM堆内存震荡:从原理到实践的GC调优指南

目录 一、典型案例&#xff1a;系统发布后的GC雪崩事件 &#xff08;一&#xff09;故障现象 1. 刚刚启动时 GC 次数较多 2. 堆内存锯齿状波动 3. GC日志特征&#xff1a;Allocation Failure &#xff08;二&#xff09;问题定位 二、原理深度解析&#xff1a;JVM内存弹…

AI智能眼镜主控芯片:技术演进与产业生态的深度解析

一、AI智能眼镜的技术挑战与主控芯片核心诉求 AI智能眼镜作为XR&#xff08;扩展现实&#xff09;技术的代表产品&#xff0c;其核心矛盾在于性能、功耗与体积的三角平衡。主控芯片作为设备的“大脑”&#xff0c;需在有限空间内实现复杂计算、多模态交互与全天候续航&#xf…

微服务拆分-远程调用

我们在查询购物车列表的时候&#xff0c;它有一个需求&#xff0c;就是不仅仅要查出购物车当中的这些商品信息&#xff0c;同时还要去查到购物车当中这些商品的最新的价格和状态信息&#xff0c;跟购物车当中的快照进行一个对比&#xff0c;从而去提醒用户。 现在我们已经做了服…

[网络爬虫] 动态网页抓取 — Selenium 介绍 环境配置

&#x1f31f;想系统化学习爬虫技术&#xff1f;看看这个&#xff1a;[数据抓取] Python 网络爬虫 - 学习手册-CSDN博客 0x01&#xff1a;Selenium 工具介绍 Selenium 是一个开源的便携式自动化测试工具。它最初是为网站自动化测试而开发的&#xff0c;类似于我们玩游戏用的按…

【RAGFlow】windows本地pycharm运行

原因 由于官方只提供了docker部署&#xff0c;基于开源代码需要实现自己内部得逻辑&#xff0c;所以需要本地pycharm能访问&#xff0c;且docker运行依赖得其余组件&#xff0c;均需要使用开发服务器得配置。 修改过程 安装python 项目依赖于Python 版本&#xff1a;>3.1…

树莓派5首次开机保姆级教程(无显示器通过VNC连接树莓派桌面)

第一次开机详细步骤 步骤一&#xff1a;树莓派系统烧录1 搜索打开烧录软件“Raspberry Pi Imager”2 选择合适的设备、系统、SD卡3 烧录配置选项 步骤二&#xff1a;SSH远程树莓派1 树莓派插电2 网络连接&#xff08;有线或无线&#xff09;3 确定树莓派IP地址 步骤三&#xff…

html-表格标签

一、表格标签 1. 表格的主要作用 表格主要用于显示&#xff64;展示数据,因为它可以让数据显示的非常的规整,可读性非常好&#xff61;特别是后台展示数据 的时候,能够熟练运用表格就显得很重要&#xff61;一个清爽简约的表格能够把繁杂的数据表现得很有条理&#xff61; 总…