Vuetify роутер не работает при вызове с JavaScript? - PullRequest
0 голосов
/ 15 апреля 2020

Я пытаюсь перемещаться по маршрутизатору из методов в Vuetify, но при добавлении / path к функции go () вся страница просто обновляется и никуда не перемещается.

Работает:

<v-btn router to="/somepage">Goto page</v-btn>

Не работает (страница просто обновляется):

this.$router.go('/somepage')

Работает (история go на шаг назад):

this.$router.go(-1)

Просмотр объекта $ router в консоль Chrome выглядит просто отлично. Что я делаю не так?

1 Ответ

1 голос
/ 15 апреля 2020

Vue маршрутизатор предоставляет несколько функций для программирования c навигация .

this.$router.go(n)

Функция go(n) ожидает n быть number и является количеством шагов вперед или назад в истории для путешествия. Я думаю, что это причина того, что вы не получаете ожидаемый результат.

this.$router.push(path|route)

Если вы хотите указать фактический путь к функции, вы должны использовать push() вместо go(). Например, для go на «домашней» странице вы можете использовать this.$router.push('/') или go для страницы профиля this.$router.push('/profile'). Важно отметить, что при использовании push() указанный вами путь добавляется в стек истории.

this.$router.replace(path|route)

Если вы НЕ хотите добавлять запись в стек истории, вы должны использовать replace() вместо push(). В противном случае использование replace() такое же, как push(), то есть this.$router.replace('/') или this.$router.replace('/profile').

Использование path против использования route объекта

Когда при навигации по push(path|route) и replace(path|route) у вас есть возможность использовать path, который представляет собой просто строку с URL-адресом места, куда вы хотите go, или используя объект route. объект маршрута дает вам гораздо больше контроля и позволяет отправлять параметры маршрута или запроса компоненту назначения.

Например, если вы хотите перейти на страницу профиля для пользователя с id из 3 вы можете сделать что-то вроде this.$router.push({ path: '/profile', params: { id: 3 } }). В качестве альтернативы, если вы используете с именем route , вы можете заменить имя маршрута на путь, то есть this.$router.push({ name: 'profile', params: { id: 3 } }). name должно соответствовать имени, назначенному маршруту, где бы вы ни настраивали свой основной Router экземпляр.

Использование компонента v-btn Vuetify

Если вы используете Компонент кнопки Vuetify НЕ существует атрибута router. Вместо этого вы просто указываете атрибут to, и Vuetify должен автоматически интерпретировать его, как если бы это был router-link, например <v-btn to="/profile">My Profile</v-btn>. Кроме того, вы можете использовать объект route, например, <v-btn :to="{ path: '/profile', params: { id: 3 } }">Profile</v-btn>. Важно отметить двоеточие (:), предшествующее to во втором случае. Это говорит Vue интерпретировать значение атрибута как JavaScript вместо простого текста.

...