vue 子页面,或者弹窗,获取不到$router,怎么做路由跳转

vue 子页面,或者弹窗,获取不到$router,怎么做路由跳转

阅读 5.8k
3 个回答

子页面 一般是不做逻辑性处理的,只是展示性处理,可以把子组件需要处理的逻辑性问题传给父组件处理,
这个方法: 子组件: this.$emit('onClickBtn');
父组件: <sidebar @onClickBtn="onLogin"></sidebar>

我猜你这个弹窗可能是别处手动new的.

即,它不是页面根组件下的子组件.(dev-tool可以看到它在root之外)
router实例是在根组件注入的.只有根组件之下的组件实例才能拿到$router.

要简单处理的话,把根组件挂到window上即可.

找到main.js或页面js入口.
添加window.APPLICATION =

window.APPLICATION = new vue({
....others
})

这样你在这之后的所有操作都可以直接拿到根组件实例.
然后你就可以在任意地方

window.APPLICATION.$router.push('/to/path')

不过建议跳转不要放在弹窗里.它的业务完成应该返回事件给调用者,让调用者的上下文去跳转.

子页面或者 弹窗肯定是可以获取到 $router的。
实在是不太明白你为什么获取不到,
你最好是把代码发出来,你看着代码都找不到问题,凭这一句话别人就能找到问题了???

推荐问题