vue-admin-template只有一个子菜单时父级菜单不显示问题

在这里插入图片描述
如上图所示:加上 alwaysShow: true 即可

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 `vue-admin-template` 中,动态菜单的数据是通过 `router` 配置生成的。要实现点击父级动态菜单父级菜单自动收缩,可以在菜单组件中监听父级菜单的点击事件,在点击父级菜单触发相应的方法来收缩同级菜单。 具体实现步骤如下: 1. 在 `src/layout/components/Sidebar/index.vue` 中找到菜单组件 `SidebarItem` ,并在 `SidebarItem` 组件中添加 `click` 事件监听器。 ```html <template> <el-submenu v-if="item.children && item.children.length > 0" :index="item.path"> <template slot="title"> <i :class="`iconfont ${item.meta.icon}`"></i> <span slot="title">{{ item.meta.title }}</span> </template> <sidebar-item v-for="(child, index) in item.children" :key="index" :item="child" :parent-path="item.path" :router="router" :opened="openedMenus.includes(item.path)" @click.native="handleClick" // 添加 click 事件监听器 ></sidebar-item> </el-submenu> <el-menu-item v-else :index="item.path"> <router-link :to="item.path"> <i :class="`iconfont ${item.meta.icon}`"></i> <span slot="title">{{ item.meta.title }}</span> </router-link> </el-menu-item> </template> <script> export default { name: "SidebarItem", props: { item: { type: Object, required: true, }, parentPath: { type: String, default: "", }, router: { type: Object, required: true, }, opened: { type: Boolean, default: false, }, }, data() { return { openedMenus: [], // 当前展开的菜单 }; }, mounted() { this.handleOpenedMenus(); }, methods: { handleClick() { if (this.parentPath) { // 如果有父级菜单,则收缩同级菜单 this.$emit("collapse", this.parentPath); } }, handleOpenedMenus() { // 记录当前展开的菜单 if (this.opened && this.item.path) { this.openedMenus.push(this.item.path); } }, }, }; </script> ``` 2. 在 `Sidebar` 组件中监听 `SidebarItem` 组件的 `collapse` 事件,并在事件处理方法中更新当前展开的菜单列表。 ```html <template> <el-menu :default-active="$route.path" class="sidebar-menu" :collapse="isCollapse" :unique-opened="true" router background-color="#304156" text-color="#bfcbd9" active-text-color="#409EFF" > <sidebar-item v-for="(item, index) in sidebar" :key="index" :item="item" :router="router" :opened="openedMenus.includes(item.path)" @collapse="handleCollapse" // 添加 collapse 事件监听器 ></sidebar-item> </el-menu> </template> <script> import SidebarItem from "./SidebarItem"; export default { name: "Sidebar", components: { SidebarItem, }, props: { sidebar: { type: Array, required: true, }, isCollapse: { type: Boolean, default: false, }, }, data() { return { openedMenus: [], // 当前展开的菜单 }; }, methods: { handleCollapse(path) { // 更新当前展开的菜单列表 if (this.openedMenus.includes(path)) { this.openedMenus.splice(this.openedMenus.indexOf(path), 1); } else { this.openedMenus.push(path); } }, }, }; </script> ``` 这样,点击父级动态菜单,同级菜单就会自动收缩了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值