如何在Quasar 1.x(Vue2)的boot文件中访问$root?
解决Quasar 1.x boot文件中$root undefined的问题
你遇到的问题是因为你在访问Vue构造函数的$root属性,但$root是Vue根实例的专属属性,不是构造函数本身的,所以会返回undefined。
在Quasar 1.x的boot文件中,你可以直接通过上下文参数里的app拿到Vue的根实例,它就是你要找的$root。修改代码如下:
import { Notify } from 'quasar' export default ({ app, router }) => { router.beforeEach((to, from, next) => { console.log(app.$root) // 现在能正常获取根实例 app.$emit('ChangingPage', true) // 直接用app发射事件,app本身就是根实例 if (!token) { if (to.fullPath !== '/login' && !to.query.tokenSetup) { Notify.create({ message: 'Necessário realizar login', position: 'top', }) next({ name: 'login' }) } else { next() } } else { next() } }) }
关键改动说明:
- 把boot函数的参数从
{ Vue, router }改成{ app, router },app就是Quasar初始化好的Vue根实例 - 用
app.$emit代替Vue.$root.$emit,因为app本身就等同于$root,直接调用$emit就能触发页面中this.$root.on监听的事件
页面里的监听逻辑不需要改动,就能正常接收boot文件发射的事件了。
内容的提问来源于stack exchange,提问作者Luiz Alves
相关产品推荐
相关产品推荐

