Я создал новое приложение Vue с базовым путем. Из-за того, что приложение встроено в другое приложение Vue, оно не запускается при router-view
запуске. Если вы хотите узнать больше о том, как или почему это приложение встроено в другое приложение, посмотрите здесь:
монтировать приложения Vue в контейнер основного приложения Vue
и мой собственный ответ на эту проблему:
https://stackoverflow.com/a/58265830/9945420
При запуске моего приложения оно отображает все, кроме router-view
. Я хочу перенаправить при запуске по указанному URL браузера. Это моя конфигурация роутера :
import Vue from 'vue';
import Router from 'vue-router';
import One from './views/One.vue';
import Two from './views/Two.vue';
Vue.use(Router);
const router = new Router({
base: '/my-embedded-app/',
mode: 'history',
routes: [
{
path: '/',
component: One,
},
{
path: '/two',
component: Two,
},
],
});
router.replace(router.currentRoute.fullPath);
export default router;
Я хочу, чтобы приложение отображало компонент Two при вызове .../my-embedded-app/two
. К сожалению, router.replace
всегда перенаправляет на /
(так URL браузера .../my-embedded-app/
). Я отладил router
и увидел, что путь есть /
, но я ожидаю, что он будет /two
.
Важное примечание:
я не хочу перенаправлять пользователя, /two
когда URL-адрес /
. Я просто хочу сделать вид, Two
когда URL-адрес /two
. В настоящее время это не так.
Что может быть не так? Может быть, мне даже не нужно это перенаправление, и я могу решить проблему более элегантным способом.
источник
Ответы:
Это нормальное поведение, так работает одностраничное приложение. Знак «как» в виде фунта означает, что ссылки не будут перемещать приложение на другую страницу.
так что вы можете изменить режим маршрутизатора на
источник
обновлено: jsfiddle
Завершилось то, что
route.currentRoute.fullPath
было выполнено до того, как маршрутизатор был готов.источник
router.currentRoute.fullPath
по-прежнему возвращается/
вместо/two
вызоваlocalhost:3000/apps/my-embedded-app/two
router.onReady(() => { router.replace(router.currentRoute.fullPath); });
message: "Navigating to current location ("/subApps/app-one") is not allowed"
Попробуй
beforeEnter
. Посмотрите на приведенный ниже код:Подробнее о штурманах здесь
источник
Two
представление, если URL браузера.../two
. В настоящее время это не такНе могли бы вы предоставить репозиторий Github или некоторые из них, чтобы проверить фактическое?
В противном случае моя первая идея - использовать дочерние маршруты с «пустым» представлением в качестве базы, вот пример того, что я пробовал. (работает в моем случае)
router.js
Base.vue
One.vue
Two.vue
источник