使用事件总线,即在main.js中 设置事件总线 vue.property.$bus = new Vue()
场景:假设相关路由为/a,/b, b路由调用a路由的方法func。
实现:
在b路由下需要调用func位置
this.$bus.$emit('funcBus',data)
a路由在created中接收
this.$bus.$on('funcBus',(data)=>{
func(data)
})
组件销毁时同时移除相关监听
destoryed() {
//移除事件监听
this.$bus.$off("funcBus");
}
这样就算是初步解决啦!!!
ps:也可以使用发布订阅实现!!!
有个小问题,在b路由下刷新网页时再重新调用func时,a路由下将不能接收到,
所以就需要执行跳转a路由操作。
试错过程:
在b路由组件中引入a组件
使用a.methods.func()进行调用a组件的方法
存在的问题:func中使用了vux进行数据操作
报错信息如下:
至今不大理解,欢迎大家一起来讨论。