Как использовать vue -рутер в методе многократного использования - PullRequest
0 голосов
/ 27 февраля 2020

Я пытаюсь использовать мой фрагмент кода там, где он мне нужен, в моем приложении. Этот фрагмент кода создает условия для пути vue -router.

Для этого я создал файл "utils. js":

const util = {
  nextStepAtelier () {
    if (this.$route.path.includes(this.user.event_1.slug)) {
      this.$router.push(`/events/${this.user.event_1_2.slug}/step-1`)
    }

    if (this.$route.path.includes(this.user.event_1_2.slug)) {
      this.$router.push(`/games/game-1/step-1`)
    }

  }
};

export default util;

И в моем step-3.vue, я называю свой nextStepAtelier() так:

import util from '~/utils/utils'
export default {
   computed: {
          user() {
              return this.$store.getters['auth/user']
          }
        },
   methods: {
            nexstStep() {
                util.nextStepAtelier();
            }
        }
}

Это не работает. У меня есть ошибки, связанные с view-router Cannot read property 'path' of undefined. Похоже, он неправильно анализирует vue -рутер.

Я уточняю, что когда я создаю этот код непосредственно в step-3.vue, он работает

Спасибо

Ответы [ 2 ]

1 голос
/ 27 февраля 2020

Поскольку this отличается внутри вашего объекта util, вы можете сделать так, чтобы nextStepAtelier принял экземпляр маршрутизатора в качестве параметра, а затем вызвал его с помощью util.nextStepAtelier(this.$router)

Затем вы можете получить доступ к текущему маршруту с помощью router.currentRoute ( вместо this.$route)

1 голос
/ 27 февраля 2020

Вам необходимо импортировать маршрутизатор, у вас нет доступа к глобальному $router внутри вашего js файла. Просто поместите в начало файла: import router from './router.js' (или любой другой путь), затем измените $router на router (удалите "this")

...