Menu 菜单
支持垂直菜单导航,配置简单,支持嵌套子菜单与图标展示。可通过 v-model 双向绑定当前路径。
支持 direction="horizontal" 横向模式,可用于顶部导航栏,并支持 children 下拉;通过 trigger 可切换点击展开或悬浮展开。
尝试使用 v-model 来做受控与非受控的切换, 当 v-model 没有绑定或者为空时,value 和 change 事件将作为非受控的方式来切换
基础用法
合并演示受控(v-model)与非受控(value + change)两种用法。
行高与间距
通过 itemHeight 和 itemColumnGap 控制菜单项高度与上下间距。
横向菜单
通过 direction="horizontal" 启用横向模式,支持一级菜单和 children 下拉子菜单,并可通过 trigger 切换 click / hover 展开方式。
菜单组(共享选中状态)
多个菜单组件包裹在 TsMenuGroup 中,将共享同一个选中路径状态(v-model),适用于多列布局或分类菜单场景。
路径、事件切换
基于原生 vue-router 的路由结构适配方案,支持动态菜单渲染。通过配置菜单数据结构与路由保持一致,实现路径联动和跳转逻辑。可自定义菜单图标、子级路径跳转行为等,适用于常规页面级导航结构。
expandByPath 职责:根据路径展开对应的菜单,如展开其他子项时,并需要切换回 v-model 所在的子项展开效果, 那么请调用该方法。 v-model 仅仅在值发生改变时才会展开正确的子项。
content-prefix + content-suffix 插槽
在同一个菜单中合并演示前缀与后缀插槽,适用于图标/状态点 + 徽标/状态文本的组合场景。
属性 Props
selectParentWhenHasChildren
是否在当有子节点时,父项点击触发 change 事件
菜单方向,默认 vertical;horizontal 支持横向排列与 children 下拉子菜单
'vertical' | 'horizontal'
含 children 的菜单展开触发方式,hover 时鼠标移入自动展开
事件 Events
(e: 'change', item: MenuItem): void;
方法 Methods
(path?: string | undefined) => void
插槽 Slots
changed 0.6.7 #prefix -> #content-prefix
changed 0.6.7 #suffix -> #content-suffix