You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 18:40:02