elementui el-menu router跳转方式传递参数

最近再做一个后台管理项目,权限控制到用户可以操作的页面按钮,获取用户按钮需要菜单的moduleId,那么逻辑就是:在点击菜单的时候加载子页面并且把菜单的moduleId带过来

        <el-menu
                class="el-menu-vertical-demo"
                background-color="#fff"
                text-color="#222"
                unique-opened
                active-text-color="deepskyblue"
                :collapse="isCollapse"
                :collapse-transition="false"
                router //指定router,通过index绑定的值来跳转
                :default-active="defaultActivePath"
                >
            <el-submenu :index="item.moduleName" 
                        v-for="item in menus" 
                        :key="item.moduleName">
                <template slot="title">
                    <i :class="item.moduleIcon"></i>
                    <span>{{item.moduleName}}</span>
                </template>
                <el-menu-item 
                    v-for="subItem in item.children"
                	:index="subItem.moduleCode" //要跳转的路由地址
                    @click="changeDefaultActivePath(subItem.moduleCode)"
                    :route={path:subItem.moduleCode,query:{moduleId:subItem.moduleId}}  //通过route传递路由对象将参数传递过去
                    :key="subItem.moduleName">
                    <template slot="title">
                        <i :class="subItem.moduleIcon"></i>
                        <span>{{subItem.moduleName}}</span>
                    </template>
                </el-menu-item>
            </el-submenu>
        </el-menu>

在这里插入图片描述
在子页面里面的获取方式

this.$route.query.moduleId;

一开始我没有看到这个属性,浪费了好多时间去尝试其他方式,传递参数是成功了但是有奇奇怪怪的bug。。。

### 解决 `el-menu-item` 点击不跳转的问题 当遇到 `el-menu-item` 点击时不跳转的情况时,通常是因为配置不当所致。为了确保导航正常工作,在使用 Element UI 的 `el-menu` 组件时需要注意几个关键点。 #### 配置 `router` 属性 确保在 `<el-menu>` 标签上设置了 `router="true"` 属性[^2]。此属性使得菜单项能够根据路径自动切换激活状态,并支持通过点击触发页面跳转功能。 ```html <el-menu :default-active="$route.path" router> <!-- 菜单项 --> </el-menu> ``` #### 设置唯一的索引值 每一个 `el-menu-item` 或者 `el-submenu` 应该拥有独一无二的 `index` 值来区分不同的项目。这不仅有助于防止界面异常刷新现象的发生,而且也是实现路由匹配的基础之一。 ```html <!-- 正确设置 index --> <el-menu-item index="/home">首页</el-menu-item> <el-submenu index="1"> <template slot="title">文档</template> <el-menu-item index="/docs/intro">介绍</el-menu-item> </el-submenu> ``` #### 完整示例代码 下面是一个完整的例子展示如何正确配置带有路由功能的菜单: ```vue <template> <div id="app"> <el-menu :default-active="$route.path" class="el-menu-demo" mode="horizontal" @select="handleSelect" router> <el-menu-item index="/">主页</el-menu-item> <el-submenu index="2"> <template slot="title">服务</template> <el-menu-item index="/service/a">选项A</el-menu-item> <el-menu-item index="/service/b">选项B</el-menu-item> </el-submenu> <el-menu-item index="/about">关于我们</el-menu-item> </el-menu> <router-view></router-view> <!-- 显示当前选中的视图 --> </div> </template> <script> export default { methods: { handleSelect(key, keyPath) { console.log(key, keyPath); } } }; </script> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值