Как установить обработчик afterEach в vue-router

1

У меня есть следующий скрипт:

import Vue from 'vue'
import Router from 'vue-router'

Vue.use(Router)

export default new Router({
  scrollBehavior (to, from, savedPosition) {
    // purposely left blank
  },
  routes: [
    {
      path: "/",
      component: SampleComponent
    }
  ]
}

Я хотел бы добавить обработчик afterEach для маршрутизатора, чтобы я мог закрыть любые открытые меню, когда была сделана ссылка маршрутизатора.

Я попытался добавить его в конструктор, но это не аргумент конструктора.

Я также пробовал:

Router.afterEach((to, from) => {
  // ...
})

Но я получаю сообщение об ошибке:

afterEach не является функцией

Как я могу соответствующим образом добавить afterEach вызов afterEach с этой настройкой?

Теги:
vue.js
vue-router
vuejs2

1 ответ

1
Лучший ответ

Вам нужно установить обработчик afterEach на экземпляр Router (объект возвращается через new Router()).

Вы можете установить ссылку на свой экземпляр и добавить к afterEach обработчик afterEach перед его экспортом:

const router = new Router({
  scrollBehavior (to, from, savedPosition) {
    // purposely left blank
  },
  routes: [
    {
      path: "/",
      component: SampleComponent
    }
  ]
});

router.afterEach((to, from) => {
  // ...
});

export default router
  • 0
    «Маршрутизатор» в примере кода не является экземпляром? Это также определяется как "импорт маршрутизатора из 'vue-router'"
  • 0
    Router - это класс, а не экземпляр. Я обновил свой ответ, чтобы быть более понятным.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню