Creé una nueva aplicación Vue con una ruta base. Debido al hecho de que la aplicación está incrustada en otra aplicación Vue, esta aplicación no representa el router-view
inicio. Si desea saber más acerca de cómo o por qué esta aplicación está integrada en otra aplicación, eche un vistazo aquí:
montar aplicaciones Vue en el contenedor de la aplicación Vue principal
y mi propia respuesta a este problema:
https://stackoverflow.com/a/58265830/9945420
Al iniciar mi aplicación, muestra todo excepto el router-view
. Quiero redirigir al inicio por la URL del navegador dada. Esta es la configuración de mi enrutador :
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;
Quiero que la aplicación represente el componente Dos cuando llame .../my-embedded-app/two
. Desafortunadamente, router.replace
siempre redirige a /
(por lo que la URL del navegador es .../my-embedded-app/
) Depuré el router
, y vi que el camino es /
, pero esperaría que fuera /two
.
Nota importante:
no quiero redirigir al usuario a donde /two
sea que esté la URL /
. Solo quiero representar la vista Two
cuando la url es /two
. Actualmente no lo hace.
¿Qué puede estar mal? Tal vez ni siquiera necesito esa redirección, y puedo resolver el problema de una manera más elegante.
fuente
Respuestas:
Ese es el comportamiento normal, es la forma en que funciona la aplicación de una sola página. El signo "libra" - como # - significa que los enlaces no moverán la aplicación a otra página.
para que pueda cambiar el modo de enrutador a
fuente
actualizado: jsfiddle
Lo que terminó sucediendo es que
route.currentRoute.fullPath
se ejecutó antes de que el enrutador estuviera listo.fuente
router.currentRoute.fullPath
todavía regresa en/
lugar de/two
cuando se llamalocalhost:3000/apps/my-embedded-app/two
router.onReady(() => { router.replace(router.currentRoute.fullPath); });
message: "Navigating to current location ("/subApps/app-one") is not allowed"
Tratar
beforeEnter
. Echa un vistazo al siguiente código:Lea más sobre los guardias de navegación aquí
fuente
Two
vista si la URL del navegador es.../two
. Actualmente no lo hace¿Podría proporcionar un repositorio github o algo para probar el real?
De lo contrario, mi primera idea es utilizar rutas secundarias con una vista "vacía" como base, aquí un ejemplo de lo que probé. (trabajando en mi caso)
router.js
Base.vue
One.vue
Two.vue
fuente