el-menu多级动态菜单渲染

2023-11-03

使用el-menu时往往会遇到动态渲染使用场景

安装和引用element暂不赘叙,对其使用方法不是很熟悉的小伙伴可以去官网按照指引完成使用

先简单叙述一下渲染思路:
首先我们要知道要渲染一个多级菜单的过程实际上就是对后端给我们的多层数据格式进行循环遍历的一个过程,只是在遍历的过程中,需要对是否submit-menu和普通el-menu-item进行判断。

这里使用的是自定义组件
创建MenuTree组件
src/components/MenuTree.vue
// 以下是组件内容
<div>
    <template v-for="menu in menuList">
      <!-- 如果当前有子菜单,则显示 el-submenu ,在el-subment 里调用 递归组件 -->
      <el-submenu
        v-if="menu.children && menu.children.length > 0"
        :index="menu.path"
        :key="menu.id"
      >
        <template slot="title">
          <i :class="menu.icon"></i>
          {{ menu.serverName }}
        </template>
        <!-- 调用自身  此处是重点-->

        <MenuTree :menuList="menu.children"></MenuTree>
      </el-submenu>
      <!-- 如果没有子菜单,则显示当前内容 -->
      <el-menu-item v-else :index="menu.path" :key="menu.id">
        <i :class="menu.icon"></i>
        {{ menu.serverName }}
      </el-menu-item>
    </template>
  </div>
注意项

1.这里的MenuTree 是vue的递归组件,实际上就是自己调用自己这里组件中调用自己的组件名字是name属性。
2.一点要在递归组件中加上判断条件,否则可能会造成爆栈。
3.这里的属性名字请根据自己后端传递的数据字段名字改变。

实例代码
export default {
  name: "MenuTree", // 这里就是上边递归组件中使用的组件名字
  props: {
    menuList: {  // 在这里增加了引入校验,方便错误排除
      type: Array,
      required: false,
    },
  },
  mounted() {},
};

以上就是我对多级菜单的渲染过程了。

便于理解补充上menuList的数据结构

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

el-menu多级动态菜单渲染 的相关文章

  • 如何在 contenteditable 中跟踪插入符/光标?

    我想在 contenteditable 中跟踪插入符 光标的移动 不过 我不确定最好的方法是什么 我目前正在监听点击 按下键盘 按下键盘的声音 当然 像箭头键或 ctrl x 这样的按键甚至不会触发 虽然 click 工作正常 但 keyd
  • 与拉斐尔的路径位置

    我如何使用 raphael js 更改路径位置 很奇怪的是 明显的方法不起作用 var p paper path some path string p attr fill red p attr x 200 y 100 not working
  • 最小有效 JSON 是多少?

    我仔细阅读了 JSON 描述http json org http json org 但我不确定我是否知道这个简单问题的答案 最小可能的有效 JSON 字符串是什么 string 该字符串是有效的 JSON 吗 42简单的数字是有效的 JSO
  • div 准备好后如何调用函数?

    我的 javascript 文件中有以下内容 var divId divIDer jQuery divId ready function createGrid Adds a grid to the html html 看起来像这样 div
  • 如何提高 highcharts 图表创建和渲染的性能

    我本地有一个文件JSON格式化数据 我创造了一点点PHP脚本在调用时回显该文件的输出AJAX 数据文件的大小是59k 我按照 highcharts 建议禁用动画和阴影 当我加载图表时 渲染需要非常非常长的时间 我已经粘贴了下面的脚本 我有什
  • 在 vuejs 上将 \n 替换为新行

    我正在尝试将 n 字符替换为来自端点的数据的新行 I tried p item licensedocument legal documentText replace r n r n g br p 并没有奏效 当我将replace 写入问题末
  • 动画和过渡的组合无法正常工作

    我一直在尝试添加一些基本的 CSS3 动画 目标是在按钮的单击事件上切换类 并根据添加的类对 div 进行动画处理 该代码对于 Firefox 中切换的第一次迭代完美运行 但对于 Chrome 等其他浏览器以及 Firefox 中的下一次迭
  • 为什么使用 MarkForCheck() 和 setTimeout?

    我对 ChangeDetectorRef 中的 MarkForCheck 方法有疑问 对于一种用法我必须使用this cd markForCheck 因为在控制台中我获取了值 但它没有在视图上更新 setTimeout gt this ch
  • 从 mvc web api httpresponse 生成 csv 并通过 angularjs 接收以供下载

    我正在尝试从我的 Web api 生成一个 CSV 文件并通过 angularjs 接收该文件 我有一个如下所示的 API 控制器 HttpPost public HttpResponseMessage GenerateCSV FieldP
  • Chrome 本机消息传递 - 为什么我会收到“找不到指定的本机消息传递主机”错误?

    根据 Chrome Native Messaging 文档 成功调用 connectNative 会返回一个端口 您可以使用该端口将消息发布到本机应用程序 Mac 应用程序 在我的例子中 nativeConnect 确实返回了一个有效的端口
  • ajax调用后如何停止刷新页面?

    ajax 调用后我无法停止刷新页面 我尝试过放置 e preventDefault 并返回 false 但我的页面又刷新了 我不知道代码有什么问题或者什么 请帮助我在ajax调用后停止刷新页面 解决这个问题对我来说会有很大的帮助 提前致谢
  • 以编程方式将子节点添加到 jstree

    我正在尝试编写一些动态添加节点到 jstree 的代码 我已经关注了医生http www jstree com documentation crrm http www jstree com documentation crrm但无法获得一个
  • onDeviceReady 未在 PhoneGap hello world 应用程序中触发

    我正在尝试做一个简单的警报 测试 应用程序 但事件没有被触发 这是代码 function onLoad document addEventListener deviceready onDeviceReady false Cordova is
  • 将 ngModel 绑定到自定义指令

    所以我已经在这个问题上工作了一个星期了 但我似乎无法理解整个指令的事情 我读了很多帖子 揭秘指令 http www toptal com angular js angular js demystifying directives 指令 ht
  • 如何在vuetify中设置固定工具栏?

    在 vuetify 中我使用工具栏
  • 以编程方式在 Highcharts 中使用缩放绘制矩形和线条

    我正在使用 Highcharts 进行一些编程绘图Highcharts Renderer http api highcharts com highcharts Renderer using path and rect 在下面的代码中 我手动
  • 单击行内的按钮时防止触发表行 onclick 事件

    我有一个带有 ONCLICK 事件的表行 切换下面的附加数据 在其中一个行单元格内有一个按钮 单击时执行 AJAX 操作 当我单击按钮时 行的 onclick 事件也会触发 并且会发生附加数据在 AJAX 调用完成之前出现 这对我来说是一个
  • Tizen SDK:找不到变量:tizen

    我正在尝试使用 Tizen SDK 创建一个 Web 应用程序 当我启动应用程序时 一切都很好 但是当我在模拟器上按 后退 按钮时 没有任何反应 并且我看到一条消息 55435 js main js 9 ReferenceError 找不到
  • 阻止 Chrome 扩展程序的 popup.html 自动打开

    我正在创建一个 Chrome 扩展程序 其中包含background html每分钟从 API 请求一次信息的文件 收到信息后 它会发送消息popup html弹出窗口使用 JSON 信息将新的 HTML 元素附加到弹出窗口的主体上 问题是
  • 将变量从调用它的父页面传递给 Vue 组件

    我有一个简单的表格 显示了我的所有数据 主文件 php table class table table bordered table hover thead tr th Job Name th th Job Description th t

随机推荐

  • 处理Mybatis返回的结果集为Map类型

    最有用到mybatis返回一个map结果集 然后就针对性的在网上找了一些相关大牛的总结 1 https www cnblogs com jwdd p 10046270 html2 https www codercto com a 33475
  • Xshell连接时显示“服务器发送了一个意外的数据包。received:3,expected:20“问题的解决方法

    一 问题描述 最近在大数据服务器上安装了openbsd6 7版本 安装完后通过xshell连接 弹出一个错误对话框 提示 服务器发送了一个意外的数据包 received 3 expected 20 的错误信息 检查sshd服务是正常开启的
  • OSI七层模型及对应的数据包格式

    我接触网络协议也比较久了 不过一直都只懂个皮毛 最近比较深入研究之后终于有点豁然开朗的感觉 也因为网络上各种协议的资料太多但是都比较分散杂乱 所以在这里做点总结 给大家提供一些资料也备自己以后查阅 鉴于有些朋友没有耐心完全看完整篇文章 所以
  • 如何快速将WPS表格或者excel数据将表格转化为json

    目录 简介 一 在表格数据的前后插入列 加上双引号 分号 逗号 二 利用表格的公式合并内容 1 在表格合并的项行后面选择或插入新的一列或一行 然后在第一个空格输入 号 2 然后用鼠标点击要合并的第一行的第一个内容格 即相对应等号的那一列 在
  • 程序员必须知道机器学习与数据挖掘十大经典算法:PageRank算法篇

    由于公司架构调整和业务方向的转变 我所在的项目组即将接手一个机器学习和数据挖掘的项目 为了后续更好地开展工作 也为了能提高自己的专业技能 我决定开始学习机器和数据挖掘方面的知识 那么 问题就来了 到底应该从哪里开始学起呢 最开始我也买了一些
  • 【基于hadoop+spark的短视频大数据分析平台-哔哩哔哩】 https://b23.tv/JoObZaH

    基于hadoop spark的短视频大数据分析平台 哔哩哔哩 https b23 tv JoObZaH https b23 tv JoObZaH
  • 心理学的166个现象---之九

    161 增减效应 人们最喜欢那些对自己的喜欢显得不断增加的人 最不喜欢那些对自己的喜欢显得不断减少的人 心理学家们将人际交往中的这种现象称为 增减效应 162 植物心理学和巴克斯特效应BACKSTER 我出生在新泽西州的LAFAYETTE市
  • 51单片机---DS18B20温度采集

    51单片机 DS18B20温度采集 实验目标 51单片机读取DS18B20温度显示在液晶显示屏上 实验步骤 在Proteus里画出原理图 在Keil里用C语言编写程序 在Proteus中导入HEX文件 启动仿真 DS18B20简介 DS18
  • pwnstack-攻防世界

    pwnstack 攻防世界 text 0000000000400762 giantbranch ubuntu Desktop file pwn2 pwn2 ELF 64 bit LSB executable x86 64 version 1
  • new String(value.getBytes (“iso8859-1“),“utf-8“)

    tomcat容器默认采用了iso 8859 1的编码方法 通过本为UTF 8编码却被tomcat用iso 8859 1解码的字进行恢复 其将解码后的字通过iso 8859 1反解码成二进制数组 再将该字节数组用UTF 8解码 最终被new
  • nodes are available: 1 node(s) had taints that the pod didn‘t tolerate

    记录最近玩k8s创建pod部署服务老是出现pending 并且查看详情describe的时候出现 nodes are available 1 node s had taints that the pod didn t tolerate 经过
  • Matlab 指针函数,MATLAB / Simulink - C MEX S函数:总线信号和涉及指针的传统C结构之间的转换...

    目前我正在MATLAB Simulink R2017b 中将遗留C代码实现为C MEX S函数 我已经在Entry at MathWorks MATLAB Answers上放了一个重复的条目 遗留函数作为一般规则指针指向涉及指向其他结构的指
  • vue3使用百度地图(详)

    前情提要 提示 该博客vue采用vue3 使用百度地图通过组件vue baidu map 3x 组件官网 https map heifahaizei com doc baidu map html 下面会从头开始介绍如何使用百度地图以及常用组
  • Java学习笔记 --- 成员方法

    一 成员方法 基本介绍 在某些情况下 我们需要定义成员方法 简称方法 比如人类 除了有一些属性外 年龄 姓名 我们人类还有一些行为比如 可以说花 跑步 通过学习 还可以做算术题 这时就需要成员方法才能完成 案例演示 public class
  • 1.3 C++ 关键字升级

    实用性增强 遍历数组的方式 关键字的升级 register vs volatile 仅能修饰局部变量 不能修饰全局变量和函数 修饰的变量不能通过 取地址 C 当对register变量取地址时 会将该变量重新保存到内存中 寄存器变量 提高运行
  • HashMap和HashSet

    一 什么是HashSet HashSet实现了Set接口 它不允许集合中有重复的元素 而且集合中的元素都是无序的 在将对象储存在HashSet之前 要确保对象重写了equals 方法和hashCode 方法 这样才能比较对象是否相等 以确保
  • 服务器级的kvm维修,企业级KVM解决方案 Altusen KM0932评测

    IT168评测中心 KVM多电脑切换器是一种可以通过由单一键盘 Keyboard 显示器 Video 及鼠标 Mouse 组成的控制端集中管理多台电脑的硬件装置 是现代数据中心的基础设备之一 使用KVM可以有效地节约机房空间 并有效地提升机
  • Linux 查看CPU架构及内核版本

    涉及arch命令和 proc version文件 1 查看CPU架构 有些软件的安装需要和CPU架构相匹配 如JDK等等 所以需要确定主机的CPU架构类型 可使用命令arch查看Linux系统的CPU架构 如下 arch 2 查看内核版本
  • 国家网络安全宣传周知识竞赛活动小程序界面分享

    国家网络安全宣传周知识竞赛活动小程序界面分享
  • el-menu多级动态菜单渲染

    使用el menu时往往会遇到动态渲染使用场景 安装和引用element暂不赘叙 对其使用方法不是很熟悉的小伙伴可以去官网按照指引完成使用 先简单叙述一下渲染思路 首先我们要知道要渲染一个多级菜单的过程实际上就是对后端给我们的多层数据格式进