首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在vue中循环和创建具有多个子菜单级别的菜单

在Vue中循环和创建具有多个子菜单级别的菜单,可以使用Vue的组件和递归的方式来实现。

首先,我们可以创建一个Menu组件作为菜单的容器,该组件包含一个子组件MenuItem。MenuItem组件可以根据传入的数据来渲染菜单项,如果菜单项还有子菜单,则递归地创建子菜单。

下面是实现该功能的示例代码:

代码语言:txt
复制
<template>
  <ul>
    <li v-for="item in menuData" :key="item.id">
      {{ item.name }}
      <menu-item :subMenu="item.children" v-if="item.children" />
    </li>
  </ul>
</template>

<script>
export default {
  name: 'Menu',
  props: ['menuData'],
  components: {
    MenuItem: {
      props: ['subMenu'],
      template: `
        <ul>
          <li v-for="item in subMenu" :key="item.id">
            {{ item.name }}
            <menu-item :subMenu="item.children" v-if="item.children" />
          </li>
        </ul>
      `
    }
  }
};
</script>

在上述代码中,Menu组件接受一个名为menuData的prop,该prop是一个包含菜单数据的数组。使用v-for指令遍历menuData数组,并渲染每个菜单项。如果菜单项有子菜单,则创建MenuItem组件,并将子菜单数据传递给MenuItem组件的subMenu prop。

MenuItem组件也使用v-for指令来循环渲染子菜单项,如果子菜单项还有子菜单,则再次创建MenuItem组件,实现多级子菜单的循环和创建。

使用示例:

代码语言:txt
复制
<template>
  <div>
    <menu :menuData="menuItems" />
  </div>
</template>

<script>
import Menu from './Menu.vue';

export default {
  name: 'App',
  components: {
    Menu
  },
  data() {
    return {
      menuItems: [
        {
          id: 1,
          name: '菜单项1',
          children: [
            { id: 11, name: '子菜单项1' },
            { id: 12, name: '子菜单项2', children: [
              { id: 121, name: '子子菜单项1' },
              { id: 122, name: '子子菜单项2' }
            ]}
          ]
        },
        {
          id: 2,
          name: '菜单项2',
          children: [
            { id: 21, name: '子菜单项3' },
            { id: 22, name: '子菜单项4' }
          ]
        }
      ]
    };
  }
};
</script>

上述示例中,App组件渲染了一个名为Menu的菜单组件,并传入了menuItems数据作为prop。menuItems数据包含了多级子菜单的数据,可以根据需要进行配置。

这样,通过递归的方式,我们就可以在Vue中循环和创建具有多个子菜单级别的菜单。对于不同的项目需求,可以根据具体情况调整菜单的样式和交互行为。

推荐的腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Core + Vue 后台管理基础框架4——前端授权

与后端不同,前端主要是通过功能入口菜单、按钮的显隐来控制授权的。具体来讲,就是根据指定用户的制定权限来加载对应侧边栏菜单页面内的功能按钮。我们一个个来讲。...2、侧边栏菜单   鉴于本项目使用了vue-router,那显然,侧边栏就会跟对应路由关联,同时,前端项目会注册路由导航事件,此事件见src根目录下permission.js: ?   ...下边的红框先调用menu store的获取侧边栏action,从后端拿到本用户具有权限的侧边栏菜单: ?   ...主要用意就是经由后端动态菜单配置前端vue-router动态路由,用到了vue-router中路由懒加载这个重要的特性。以上就是前端动态侧边栏的实现。...3、功能按钮   大部分项目都做到了菜单的权限控制,但做到页面级别的,倒是不多。毕竟他该,而且也是要费点儿功夫的。那这里我们就来看看前端是如何实现按钮权限控制的。

73410

UniApp TabBar的巅峰之作:个性化导航的魅力

⚠️注意 本次不是从零玩转系列需要有一定的编程能力的同学 图片 二、介绍 UniApp的TabBar 如果应用是一个 tab 应用,可以通过 tabBar 配置项指定一导航栏,以及 tab 切换时显示的对应页...uni.hideTabBar(OBJECT) 图片 好我们知道有这个懂就行,后面我们进行创建我们的 自定义菜单栏组件 tabbar.vue 六、自定义TabBar 创建组件 tabbar.vue 这里我们使用...的数据数组,并为数组的每个元素执行一次循环。...在循环过程,item 是数组的当前元素,index 是当前元素的索引。v-for 指令还使用 :key="index" 来确保每个循环元素都有一个唯一的标识符。...它还具有一个动态的样式绑定,根据条件选择文本的颜色。如果 selected 的值等于当前循环元素的 index,则使用 selectedColor,否则使用 color。

5.4K232
  • Spring Boot+Vue3 动态菜单实现思路梳理

    ---- 关于 Spring Boot + Vue3 的动态菜单,松哥之前已经写了两篇文章了,这两篇文章主要是从代码上大家分析动态菜单最终的实现方式,但是还是有小伙伴觉得没太看明白,感觉缺乏一个提纲挈领的思路...在 vhr ,考虑到菜单就是只有两:一菜单菜单,一菜单是目录,二菜单是则是具体的菜单项,没有三菜单!...所以在 vhr ,查询菜单的时候我直接用了一个一对的查询,将一菜单做一的一方,二菜单的一方,这样比较省事。当然灵活度差一点,所以在 TienChin 项目中,这块还是用上了递归。...如果不是一菜单(是一个子菜单),并且是一个在当前系统展示的外链,那么就使用 InnerLink 这个组件(这个组件中有一个 iframe 标签可以把外链展示出来,菜单 4 的子菜单情况)。d....其他属性都比较容易,我就不啰嗦啦~ 好啦,Vue3+Spring Boot 动态菜单管理,最近整了好几篇了,就先说这么吧,小伙伴们有问题欢迎留言讨论!

    1K20

    深入剖析基于数据库菜单列表实现Vue动态路由的高效策略

    在构建一个基于 Vue.js 的单页应用时,我们经常需要根据后端数据库的系统菜单来动态生成前端路由。这样做的好处是,当后端菜单结构发生变化时,前端路由可以自动更新,无需手动修改代码。...本文将介绍如何在 Vue 实现查询数据库系统菜单并将其转化为 router 路由格式参数。正文内容一、服务端准备工作1....const resultMap = new Map();遍历查询到的菜单数据,根据菜单类型(menuType)将数据转换为 Vue Router 可识别的路由格式参数,并将结果存储到 resultMap...总结本文介绍了如何在 Vue.js Vue Router 查询数据库系统菜单,通过定义转化数据的函数,并将其转化为 Vue Router 可识别的路由格式参数。...通过这种方式,我们可以实现动态生成渲染导航菜单以及对应的页面内容。

    27131

    后台管理系统 – 页面布局设计

    (3)混合菜单布局 其实侧边菜单布局大同小异,还是属于侧边菜单布局的范畴。 只不过这样布局的话,面包屑导航就不适合顶部放一行了,只能另起一行。...侧边栏最好是路由配置共用一套数据,方便扩展维护,这里得益于 react-router-waiter 已经封装好的路由管理方案(类vue-router),所以直接读取路由配置数据,动态生成菜单组件结构...", }, "/nest/nest1": { "title": "二菜单1" }, "/nest/nest1/nest11": { "title": "三菜单11" } } 然后,获取当前路由完整路径...(例如:/nest/nest1/nest11),再通过/分隔成段子路由,上述getRouteMetaMap方法取到的映射数据匹配,获取子路由的title标题组合成面包屑(多级菜单 / 二菜单1 /...三菜单11),展示出来。

    7.2K51

    最全vue3开源管理系统汇总

    它是一个现代化的前端框架,具有高效、灵活、易用等特点,今天,要为大家介绍几款开源免费vue3开源管理后台,可以帮助我们快速搭建企业后台产品原型。 1....Naive Ui Admin 遵守 Naive Ui 组件设计开发约定,风格统一,它使用了最新的前端技术栈,并提炼了典型的业务模型,页面,包括二次封装组件、动态菜单、权限校验、粒子化权限控制等功能,它可以帮助你快速搭建企业后台项目...name 就好了 3、可以借助 vite-plugin-vue-setup-extend 插件 提示:目前框架只支持到,二菜单,无法支持二以上的菜单,Plus 版本已支持 3....15. vue-admin-beautifu Vue Admin Beautiful是一款基于Vue.js技术栈开发的管理后台模板,它具有丰富的功能灵活的布局,能够帮助开发者快速构建一流的后台管理系统...同时,Vue Admin Beautiful还提供了一个高度可定制的主题系统,允许用户快速创建自己的UI风格,以满足不同品牌设计需求。 16.

    2.5K10

    TienChin 项目动态菜单接口分析

    TienChin 项目基于 RuoYi-Vue 脚手架,所以接下来的分析也是在说 RuoYi-Vue 这个脚手架动态菜单的实现方案。 1....在 vhr ,考虑到菜单就是只有两:一菜单菜单,一菜单是目录,二菜单是则是具体的菜单项,没有三菜单!...所以在 vhr ,查询菜单的时候我直接用了一个一对的查询,将一菜单做一的一方,二菜单的一方,这样比较省事。当然灵活度差一点,所以在 TienChin 项目中,这块还是用上了递归。 2....前端菜单展示 接下来,前端菜单展示分为了几种情况?这个松哥在之前的文章已经大家聊过了,具体可以参考Vue 里,多级菜单要如何设计才显得专业?一文,这里不再赘述。 3....如果不是一菜单(是一个子菜单),并且是一个在当前系统展示的外链,那么就使用 InnerLink 这个组件(这个组件中有一个 iframe 标签可以把外链展示出来,菜单 4 的子菜单情况)。d.

    1.3K30

    熬夜整理的vue面试题,面试加油

    ,但vue3组件已经可以根节点了。...组件也会转换为一个vdomvue3之所以可以写多个根节点,是因为引入了Fragment的概念,这是一个抽象的节点,如果发现组件是根的,就创建一个Fragment节点,把多个根节点作为它的children...,该选项优先较高,优先起作用const Comp = { extends: myextends}混入的数据方法不能明确判断来源且可能当前组件内变量产生命名冲突,vue3引入的composition...并且可以多人协作,每个人写不同的组件,最后像撘积木一样的把它构成一个页面Vue.extend 作用原理官方解释:Vue.extend 使用基础 Vue 构造器,创建一个“子类”。...其实就是一个子类构造器 是 Vue 组件的核心 api 实现思路就是使用原型继承的方法返回了 Vue 的子类 并且利用 mergeOptions 把传入组件的 options 父类的 options

    1.9K40

    应用基础框架全面解析

    二、系统资源 菜单管理 菜单框架支持两菜单,用户可以自定义菜单的路径打开方式等。 ? 应用基础框架提供了几个基础的菜单,用户可以在页面编辑菜单或者直接在数据库端编辑菜单。...目前应用基础框架前端Ui支持二菜单,用户可以根据自己的需求扩展到三菜单。 字典码表 字典码表即为系统内部定义的具有业务属性的数据字典。 ?...系统管理员可以配置字典类型字典项,用于管理系统的枚举类型的基础数据,并且支持excel导入导出。字典类型字典数据均支持一子项。...角色:角色是Coframe一个重要的对象,也可以成为权限集,表示系统权限一个子集,用于控制用户可以使用的功能集合,赋予用户一个角色表示给用户一定功能的使用权限。...精选提问: 问1:这个是一个前后端分离的项目吗 我看前端单独部署在nginx。 答:是前后端分离的,前端是用VUE开发的。 问2:接入的SSO是支持CAS吗?

    79230

    记一个“奇葩”需求的实现

    下面记录一下我觉得比较有意思的、会引起思考的需求,所用技术:vuevue-router、element-ui。...2、需求: 导航菜单(el-menu组件)竖向展示的 鼠标移入一菜单展示下面的子菜单,移出则收起来(手风琴模式,正常状态下只保持一个菜单处于展开状态,手动鼠标悬浮展开的不算) 选中某个子菜单时高亮对应的一菜单...(只能自己修改了) unique-opened 参数可以控制是否只保持一个子菜单展开,但是在没有子菜单的情况下失效(需要手动修改) 4、思路分析: 导航菜单使用递归el-submenu组件实现...鼠标滑动展开关闭需求: el-submenu 组件编写鼠标移入移出事件(mouseenter、mouseleave),拿到indexPath,调用openclose方法打开或者折叠菜单(注意:没有子菜单的一菜单鼠标移入移出不做处理...select回调事件里写逻辑了 在菜单激活的select回调事件,让上一个打开的菜单调用close方法关闭。

    70410

    基于 RuoYi-Vue 做一个健身会员管理系统

    1.2 菜单分析 在 RuoYi-Vue ,采用的是方案一,即 vhr 的方案是一样的:服务端动态返回菜单信息,前端再去渲染就行了。...对于一些新手小伙伴,我着重解释一个跟前端显示相关的字段: order_num:这个菜单项在前端页面展示的顺序,例如一菜单系统管理中有用户管理菜单管理,那么用户管理菜单管理这两个子项之间就存在一个展示顺序的问题...path:这个是前端的路由地址,可以简单理解为前端页面的跳转地址,假设系统管理菜单项的 path 为 system,系统管理下有一个子菜单日志管理,日志管理的 path 为 log,日志管理下有一个子菜单是操作日志...自定义菜单数据 那我们自己这个健身会员的菜单会有所不同,我想要自己重新定义一下,根据前面第一小节的分析,这里我来创建八个健身会员管理系统相关的菜单,如下: 系统原本的功能被我都收到系统管理这个菜单。...component 字段其实已经暗示了前端的页面地址,所以,我们根据后端的 component 字段,来创建前端页面即可: 每一个 .vue 文件都还没写内容,就一句话,类似下面这样: 后期再补充。

    92120

    安防流媒体无插件直播管理设计

    通过简单的网络摄像机通道配置,将传统监控行业里面的高清网络摄像机IPCamera、NVR等具有RTSP协议输出的设备接入到流媒体服务,流媒体服务能够将这些视频源的音视频数据进行拉取,转换为RTMP/HLS...比如:在幼教集团管理幼儿园管理,幼教机构管理。 A幼儿园 |–小一班 |–中二班 B少年宫 |–舞蹈班 |–英语班 2.2. 功能介绍 2.2.1....板块列表 以树状图的方式展示板块列表,方便维护管理; 目前支持二板块,可以配置一区域,二位置板块; 可以应用于,集团的多个子部门的视频设备的管理;方便查询与维护; 支持【全部展开】【全部收缩...菜单管理 3.1.业务场景 按钮权限控制 内部管理过程当中,会细分多种角色,每种角色应有不同的权限;管理平台,支持到菜单的按钮权限;可以配置一区域,区分不同类别的功能菜单;每个菜单下,设置了包括删除...角色细分 配置多种用户角色,为不同的角色制定资源规则;可以根据内部业务,自由精细化管理;控制到了角色在功能页面上的【按钮】级别权限;:有的角色只有查看权限,没有编辑权限等; 4.2.功能介绍

    54010

    vue博客实战---博客首页开发

    这边有一个小细节需要优化的就是登陆/注册按钮退出按钮不能同时显示,我们首先需要在data设置变量flag,然后在mounted的时候监听localStorage是否有保存用户信息,如果处于登录状态则隐藏登陆...后台选项还有对应后台的子菜单,所以我们需要为后台添加子菜单,每个子菜单就是一个el-menu-item,后台子菜单包含:首页,标签管理,文章管理,文章发表,每个子菜单实际上就是一个个router-link...左右两侧导航栏实现完毕,接下来需要设置中间的博客主界面,实际上中间界面不是固定界面,而是由index.jsroutes的components决定具体渲染哪一个vue文件作为博客主界面,在首页我们渲染的是...我们在src/components下创建article.vue文件,data添加参数articleList用于接收后端返回博客文章列表,在mounted阶段通过axios发起post请求访问后端接口查询博客文章列表并且将结果绑定到...接口实现完成我们回到article.vue开始文章列表的渲染工作,组件内放置一个class为content的div,使用v-for循环渲染文章列表,对文章标题阅读全文按钮添加点击事件,点击按钮可以跳转到文章详情界面

    6.8K20

    动态加载router,用Vue+Element UI搭建后台管理系统界面

    今天教大家用 Vue + Element UI 搭建一个后台管理系统界面,首先讲一下需要用到的组件标签,重点是左侧菜单栏的创建,Element UI 左侧菜单的标签有: el-container:构建整个页面框架...很简单,通过 Vue 标签语法动态读取 router 配置即可,我们的目标菜单如下图所示。 ? 两个一菜单,每个一菜单下对应两个页面,在 router.js 添加代码如下所示。...接下来在 Main.vue 动态解析 router,生成菜单,代码如下所示。...routes,动态生成 标签,此为一菜单,在内部继续用 v-for 循环遍历其 children,动态生成 标签,是二菜单,给每个标签设置不同的...菜单创建成功,接下来完成页面与菜单选项的绑定。 1、 标签添加 router 属性。

    3.1K21

    【译】W3C WAI-ARIA最佳实践 -- 表单

    菜单栏通常是水平的,通常用以创建类似很多桌面应用窗口顶部附近的菜单栏,让用户快速访问一组连续的命令。...+ Home: 如果不支持光标键循环,则将焦点移动到当前menu或menubar 的第一个子项。 + End: 如果不支持光标键循环,则将焦点移动到当前menu 或menubar 的最后一个子项。...,关闭其 menu 所有打开的父 menu 容器 + Shift + Tab: 将焦点移动到Tab序列的上一个元素,并且如果获得焦点的项目不在 menubar ,关闭其 menu 所有打开的父...包含在菜单的项目是包含menu或menubar的子元素,并且具有一下任意角色: menuitem menuitemcheckbox menuitemradio 如果激活一个 menuitem 会打开一个子菜单...一个子菜单菜单元素被它的父 menuitem 包含或拥有。 父menu的aria-haspopup 设置为 true。

    8.2K30

    Vue 里,多级菜单要如何设计才显得专业?

    松哥最近正在录制 TienChin 项目视频~采用 Spring Boot+Vue3 技术栈,里边会涉及到各种好玩的技术,小伙伴们来松哥一起做一个完成率超 90% 的项目,戳戳戳这里-->TienChin...1.1 菜单设计 先来小伙伴们回顾下 vhr 的方案: 在 vhr ,权限的控制,只控制到二菜单,也就是一菜单权限没关系。...举个例子,现在有一菜单 A 菜单 B,B 是 A 中的菜单,现在假设: 如果当前用户权限可以查看 B 菜单,那么 A 菜单会自动显示出来。...alwaysShow:如果这个属性设置为 false,那么当当前菜单只有一个子菜单的时候,默认情况下就只会显示子菜单,而忽略父菜单 1.1 小节所述),但是如果将该属性设置为 true,则无论当前菜单有几个子菜单...再来看第二个角色管理这个菜单项,由于它的父菜单只有一个子菜单项,并且父菜单也没有 alwaysShow 属性,所以这个菜单项在最终展示的时候,就只展示里边的角色管理,父菜单则不会展示出来(正好,生成的

    1.1K20

    分享5个关于 Vue 的小知识,希望对你有所帮助

    大家好,今天分享几个Vue相关的小知识,希望对你有所帮助 1、在Vue.js获取下拉框选择的值 有时候,我们希望在Vue.js在选项改变时获取所选的选项。...在这篇文章,我们将学习如何在Vue.js获取选择的选项。 在Vue.js获取选择的选项 我们可以通过将@change设置为一个方法来在Vue.js获取选择的选项。...3、在Vue.js获取组件内的元素 有时候,我们希望在Vue.js获取组件内的元素。在本文中,我们将讨论如何在Vue.js获取组件内的元素。...方法来添加自定义指令,该方法使用指令名称一个对象作为参数,该对象具有 bind unbind 方法以在 bind 方法添加 el 方法。...在上述所有场景,通过 "v-click-outside" 这个自定义指令,你可以非常简单地处理点击元素外部的事件,进而实现你的交互需求。 5、如何在Vue组件实例内的方法调用过滤器?

    20930

    应用基础框架之权限控制

    然后,我们设置了两个权限模板,其中一个负责 coframe 与子系统一的资源,另一个则负责三个子系统的资源。基于两个权限模板,我们分别创建了角色一与角色二。...动态结构首先要求菜单本身为树状结构,且菜单对应的页面(vue 叫路由),图标等也记录在菜单。整个菜单的层次结构,由菜单本身的树状结构表现。...接口调用控制 在接口调用控制上,我们考虑过使用现成的一些控制方法, spring method security。但是它只能控制到角色,虽然可以规则匹配,但仍然不够灵活。...不同的数据,定义的特征维度都不一样。 答:数据可见性分通过成员授权与资源授权控制。成员授权,比如项目成员,首先是角色有归属,有些角色是只属于这个项目的,项目经理,开发人员等。...资源则包括菜单,功能,应用,api,页面等也都可以归为此类。参与者关联多个资源载体,资源载体关联多个资源,实现资源与参与者的对多关联。

    1.1K40

    基于 qiankun 的微前端最佳实践(万字长文) - 从 0 到 1 篇

    注意:qiankun 属于无侵入性的微前端框架,对主应用基座微应用的技术栈都没有要求。 我们在本教程,接入了技术栈 微应用 的 主应用 最终效果图如下: ?...我们现在来设置主应用的布局,我们会有一个菜单显示区域,代码实现如下: // micro-app-main/src/App.vue //... export default class App extends...micro-app 因为我们还没有注册任何微应用,所以这里的效果图上面的效果图是一样的。 到这一步,我们的主应用基座就创建好啦!...如果是多个 html 的页应用 - MPA,则需要在服务器(或反向代理服务器)通过 referer 头返回对应的 html 文件,或者在主应用中注册多个微应用(不推荐)。...小结 最后,我们所有微应用都注册在主应用主应用的菜单,效果图如下: ? micro-app 从上图可以看出,我们把不同技术栈 Vue、React、Angular、Jquery...

    6.6K40
    领券