vue 子页面,或者弹窗,获取不到$router,怎么做路由跳转
我猜你这个弹窗可能是别处手动new的.
即,它不是页面根组件下的子组件.(dev-tool可以看到它在root之外)
router实例是在根组件注入的.只有根组件之下的组件实例才能拿到$router.
要简单处理的话,把根组件挂到window上即可.
找到main.js
或页面js入口.
添加window.APPLICATION =
window.APPLICATION = new vue({
....others
})
这样你在这之后的所有操作都可以直接拿到根组件实例.
然后你就可以在任意地方
window.APPLICATION.$router.push('/to/path')
不过建议跳转不要放在弹窗里.它的业务完成应该返回事件给调用者,让调用者的上下文去跳转.
9 回答1.8k 阅读✓ 已解决
6 回答1.8k 阅读
3 回答1.5k 阅读✓ 已解决
4 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读
2 回答1.3k 阅读✓ 已解决
3 回答1.5k 阅读✓ 已解决
子页面 一般是不做逻辑性处理的,只是展示性处理,可以把子组件需要处理的逻辑性问题传给父组件处理,
这个方法: 子组件: this.$emit('onClickBtn');
父组件: <sidebar @onClickBtn="onLogin"></sidebar>