Состояние экземпляра Vue и перенаправление маршрута - PullRequest
0 голосов
/ 01 марта 2019

Использование vue.js и vue-router Я хотел бы иметь свойство глобального состояния приложения (что-то общее для компонентов) и предотвращать маршруты в зависимости от значения этогосвойство.

Например, если статус не инициализирован, я хочу перенаправить все маршруты в корень "/".Я пробовал следующее:

Vue.use(Router)

const router = new Router({
    routes: routes
})

// global status property
Vue.prototype.$isInitialized = false

router.beforeEach((to, from, next) => {
    if (!this.$isInitialized) { // <--- does not work, can't access Vue instance from here
        next("/")
    }
    else {
        next()
    }
}) 

Этот код не работает, потому что я не могу получить доступ к экземпляру Vue из глобальных перехватчиков маршрутизатора.Как правильно добиться такого поведения в Vue?

1 Ответ

0 голосов
/ 01 марта 2019

Решено на данный момент присоединить глобальное свойство к экземпляру маршрутизатора вместо экземпляра Vue:

Vue.use(Router)

// global status property
Router.prototype.$isAppInitialized = false

const router = new Router({
    routes: routes
})

router.beforeEach((to, from, next) => {
    if (to.path !== "/" && !router.$isAppInitialized) { 
        next("/")
    }
    else {
        next()
    }
}) 

Это работает, потому что возможно получить доступ к экземпляру маршрутизатора в компонентах и ​​обновить глобальное свойство, нодля меня это похоже на хак.Пожалуйста, дайте мне знать, если есть лучшие способы сделать это.

...