vue 导致el-menu高亮会失效的问题
一个router转到另一个router常用的方法:
this.$router.push({path:'',params:{}});
this.$router.push({path:'',query:{}});
这种方式传参都是可以接收到的。但是有个问题,导致中的el-menu不能高亮显示,进行跟踪以后会现:default-active与router的index都是一致。
但就是不能高亮,除非新开窗口才可以显示高亮。
那这样的话,传值就会有问题,不管是$store, 还是params/query都是有问题的。
所以一定要用window.open来打开。下面是处理方法,来自下面的链接中。
方法一
1、页面1,比如有个按钮,那么点击处理即可。
const routeData = this.$router.resolve({ path: '', //跳转目标窗口的地址 query: { name: zhangsan //括号内是要传递给新窗口的参数 } }) window.open(routeData.href) )
2、转到的path的页面中进行接收
mounted() { this.$nextTick(function() { window['getData'] = (val) => { this.name = val } }) }
方法二
1、页面1,比如有个按钮,那么点击处理即可。
let params = 'message' const routeData = this.$router.resolve({ path: '', //跳转目标窗口的地址 query: { params //括号内是要传递给新窗口的参数 } }) window.open(routeData.href)
2、转到的path的页面中进行接收
mounted() { console.log(this.$route.query) // 输出为:{params:"message"} console.log(this.$route.query.params) // 输出为:message }
方法二,采用了这种,可以。
实际上上面的并不能满足我的要求,直接通过query/params传参的话,点一下导航中的菜单,参数就会丢失。
所以采用的是动态路由处理,比如/abc/:param1,这样就可以解决。
参考:
道法自然