vue3通过el-dropdown实现动态菜单切换页面

news2024/11/19 17:35:39

这是效果图在这里插入图片描述

首先是主页index.vue

<template>
  <el-row>
    <el-col :span="20">
    
      <!-- 顶部菜单 -->
      <div v-if="showTop">
        <topmenu />
      </div>
      
      <!-- 右侧下方区域动态切换的内容 -->
      <div style="flex: 1;">
        <component :is="currentComponent" />
      </div>
      
    </el-col>
  </el-row>
</template>

<script setup>
import {onMounted, shallowRef} from 'vue';
import Topmenu from "./station/topmenu";

const currentComponent = shallowRef(signal);

//主动监听事件
onMounted(() => {
  window.addEventListener('componentChange', (event) => {
    const component = event.detail;
    // 在这里处理接收到的组件或其他数据
    currentComponent.value = component;
  });
});

getStationList()
</script>

接下来是菜单页面menu.vue

<template>
  <div style="width: 100%; margin-top: 10px; display: flex; align-items: center; border-bottom: 1px solid #ccc;">
    <el-dropdown v-for="(dropdown, index) in dropdowns" :key="index">
      <el-button
          color="#f0f0f0"
          :dark="true"
          @click="handleSelect(dropdown.id)"
          :style="{ 'background-color': buttonTransparency[dropdown.index] ? 'transparent' : '#f0f0f0' }"
      >
        {{ dropdown.text }}
        <el-icon v-if="buttonTransparency[dropdown.index]" class="el-icon--right"></el-icon>
      </el-button>
      <template #dropdown>
        <el-dropdown-menu class="transparent-bg">
          <el-dropdown-item v-for="(item, i) in dropdown.items" :key="i" @click="handleSelect(item.id)">
            {{ item.text }}
          </el-dropdown-item>
        </el-dropdown-menu>
      </template>
    </el-dropdown>
  </div>
</template>

<script setup>
import {useRouter} from 'vue-router';
import signal from '@/views/drawing/station/index';//这里导入vue页面
import one from '@/views/drawing/test/one';
import two from '@/views/drawing/test/two';

const router = useRouter();

const buttonTransparency = ref([true, false, false, false, false, false]); // 6个按钮的透明状态

const dropdowns = [
  {
    id: '1',
    text: '菜单1',
    items: [],
    index: 0
  },
  {
    id: '2',
    text: '菜单2',
    items: [
      { id: '2-1', text: '子菜单1' },
      { id: '2-2', text: '子菜单2' },
    ],
    index: 1
  },
  {
    id: '3',
    text: '菜单3',
    items: [
      { id: '3-1', text: '子菜单1' },
      { id: '3-2', text: '子菜单2' },
    ],
    index: 2
  }
];


const handleSelect = (index) => {
  if (index === '1') {//这里对应菜单id
    updateButtonTransparency(0);//这里对应数组下标,从0开始
    emitComponentChange(signal);//这里对应上面导入的vue页面
  } else if (index === '2') {
    updateButtonTransparency(1)
  } else if (index === '2-1') {
    emitComponentChange(one);
  } else if (index === '2-2') {
    emitComponentChange(two);
  } else if (index === '3') {
    updateButtonTransparency(2)
  }
};

const updateButtonTransparency = (index) => {
  // 点击某个按钮,该按钮的透明状态变化,其他按钮恢复原状
  buttonTransparency.value = buttonTransparency.value.map((_, i) => i === index);
};

const emitComponentChange = (component) => {
  // 触发自定义事件,传递组件或其他数据
  const event = new CustomEvent('componentChange', {detail: component});
  window.dispatchEvent(event);
};

</script>

<style scoped>

</style>

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

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

相关文章

Python GUI编程:dearpygui和tkinter的对比与选择详解

概要 随着Python在GUI(图形用户界面)编程中的不断发展&#xff0c;出现了许多优秀的库&#xff0c;如dearpygui和tkinter。 这两个库在许多方面都有所不同&#xff0c;不仅是在功能方面&#xff0c;还在设计哲学和用途上。 本文将对比这两个库&#xff0c;并使用Python代码举…

智能AI问答系统ChatGPT网站系统源码+Midjourney绘画+支持GPT-4-Turbo模型+支持GPT-4图片理解能力

一、AI创作系统 SparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统&#xff0c;支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI…

Audacity降噪消除视频中杂音

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒体系统工程师系列【原创干货持续更新中……】🚀 人生格言: 人生从来没有捷径,只…

面试篇之微服务(二)

目录 服务容灾 21.什么是服务雪崩&#xff1f; 22.什么是服务熔断&#xff1f;什么是服务降级&#xff1f; 什么是服务熔断&#xff1f; 什么是服务降级&#xff1f; 有哪些熔断降级方案实现&#xff1f; 23.Hystrix怎么实现服务容错&#xff1f; 24.Sentinel怎么实现限…

【物联网与大数据应用】Hadoop数据处理

Hadoop是目前最成熟的大数据处理技术。Hadoop利用分而治之的思想为大数据提供了一整套解决方案&#xff0c;如分布式文件系统HDFS、分布式计算框架MapReduce、NoSQL数据库HBase、数据仓库工具Hive等。 Hadoop的两个核心解决了数据存储问题&#xff08;HDFS分布式文件系统&#…

基于YOLOv8深度学习的生活垃圾分类目标检测系统【python源码+Pyqt5界面+数据集+训练代码】目标检测

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推…

SOLIDWORKS 2024新功能之SOLIDWORKS Manage篇

SOLIDWORKS 2024 新功能 SOLIDWORKS Manage篇目录概述 • 在文档预览中测量 • Plenary Web 客户端 CAD 文件预览 • 受影响项目的字段条件 • 任务自动化 • 工作任务燃尽图 • 时间表工作时间 • 材料明细表数量 • 替换 BOM 品项的流程输出 • 向 BOM 添加子条件 一…

为什么 SQL 日志文件很大,我应该如何处理?

SQL Server 日志文件是记录所有数据库事务和修改的事务日志文件。在 SQL 术语中&#xff0c;此日志文件记录对数据库执行的所有 INSERT、UPDATE 和 DELETE 查询操作。 如果数据库处于联机状态或处于恢复状态时日志已满&#xff0c;则 SQL Server 通常会发出 9002 错误。在这种…

脚本格式问题记录

服务器上的一些脚本迁移到其他服务上发生的小问题 问题&#xff1a;执行一个在win10系统编写好的shell脚本&#xff0c;放到Linux上执行报错如下&#xff1a; bash: ./xxx.sh: /bin/bash^M: bad interpreter: No such file or directory 原因&#xff1a;window系统写的脚本&a…

c++——string字符串____迭代器.范围for.修改遍历容量操作

在成为大人的路上喘口气. 目录 &#x1f393;标准库类型string &#x1f393;定义和初始化string对象 &#x1f4bb;string类对象的常见构造 &#x1f4bb;string类对象的不常见构造 &#x1f4bb;读写string对象 &#x1f393; string类对象的修改操作 &#x1f4…

大数据——一文详解数据仓库概念(数据仓库的分层概念和维度建模详解)

1、ods是什么&#xff1f; ods层最好理解&#xff0c;基本上就是数据从源表拉过来&#xff0c;进行etl&#xff0c;比如MySQL映射到Hive&#xff0c;那么到了Hive里面就是ods层。ods全称是 Operational Data Store&#xff0c;操作数据存储——“面向主题的”&#xff0c;数据…

某60物联网安全之IoT漏洞利用实操1学习记录

物联网安全 文章目录 物联网安全IoT漏洞利用实操1&#xff08;逻辑漏洞&#xff09;实验目的实验环境实验工具实验原理实验内容实验步骤 IoT漏洞利用实操1&#xff08;逻辑漏洞&#xff09; 实验目的 学会使用fat模拟IoT设备固件 学会使用IDA分析设备固件内服务程序的逻辑漏洞…

外骨骼运动控制方法的简单解读

Title: 外骨骼运动控制方法的简单解读 文章目录 I. 前言II. 关节运动控制 —— 运动轨迹/运动意图的跟踪III. 柔性交互控制 —— 提高外骨骼和人交互的 "透明性"IV. 能量成型控制 —— 借鉴双足机器人的无源步态控制V. 贝叶斯优化 ——控制参数的优化与学习VI. 小节个…

Windows11编译Hadoop3.3.6源码

由于https://github.com/kontext-tech/winutils还未发布3.3.6版本&#xff0c;因此尝试源码编译 目录 环境和安装包准备&#xff0c;见2zlib编译方法一&#xff1a;方法二&#xff1a; 配置文件更改1. maven阿里云镜像2. Node版本3. 越过Javadoc检查 编译HadoopError,其他报错…

ThermalLabel SDK for .NET 13.0.23.1113 Crack

ThermalLabel SDK for .NET 是一个 .NET 典型类库&#xff0c;它允许用户和开发人员创建非常创新的条码标签并将其发布在 zebra ZPL、EPL、EPSON ESC、POS 以及 Honeywell intermec 指纹中通过在 VB.NET 或 C# 上编写 .NET 纯代码来实现热敏打印机&#xff0c;以实现项目框架的…

【Vulnhub 靶场】【CEREAL: 1】【困难】【20210529】

1、环境介绍 靶场介绍&#xff1a;https://www.vulnhub.com/entry/cereal-1,703/ 靶场下载&#xff1a;https://download.vulnhub.com/cereal/Cereal.ova 靶场难度&#xff1a;困难 发布日期&#xff1a;2021年5月29日 文件大小&#xff1a;1.1 GB 靶场作者&#xff1a;Thomas…

PHP:处理数据库查询数据

注&#xff1a; DB_num_rows($result5)可以替换为mysqli_num_rows($result5) DB_fetch_array($result5)可以替换为mysqli_fetch_assoc($result5) 一、查询单个数据 代码解析 1、SQL语句 查询表www_users中当userid等于变量$_SESSION[UserID]时的depart_code值 $sql &qu…

鸿蒙【HarmonyOS】开发初体验

官方开发文档 依照官方开发文档进行配置&#xff0c;官方的文档很详细&#xff08;虽然有些粗糙&#xff09;。 其实只要下载了deveco studio&#xff0c;其他就按照next来就行了。配置都很清楚。 顺便提一下&#xff0c;deveco是基于intellij 的&#xff0c;体验很不错&…

【linux防火墙】iptables的四表五链以及实操应用

目录 一、防火墙的基本认识 浅提一下iptables 二、防火墙的分类 三、netfilter中的五个勾子函数和报文流向 四、netfilter/iptables的简介 五、iptables的原理讲解和四表五链 内核中数据包传输的过程&#xff1a; 六、iptables iptables的语法&#xff1a; 七、实操 七…

linux系统下的nginx服务安装

一. 环境 在安装nginx前&#xff0c;需要提前配置的环境包括 pcre&#xff1a;rewrite正则相关pcre:URL重写软件&#xff0c;实现伪静态\URL跳转等、SEO优化。 openssl&#xff1a;https加密访问用它 zlib&#xff1a;提供数据压缩用1.安装pcre 1.1 检查版本 执行&#xff…