Я искал во многих частях Интернета (stackoverflow, vue документация, блоги и т. Д.) И не нашел нужного мне решения. Итак, проблема в следующем:
routes.js
{
path:'/',
components:{
allPageView:LytSPA
},
meta:{
requiresAuth:true
},
children:[
{
path:'',
name:'admin',
components:{
sectionView:AdminDashboard
}
},
{
name:'admin.users',
path:'usuarios',
components:{
sectionView:Users
},
children:[
{
name:'admin.users.create',
path:'crear',
components:{
sectionView:UsersCreateEdit
}
}
]
}]}
Итак, пути: /, / usuarios и / usuarios / crear.
Мои представления: App.vue (с именованным представлением), LytSPA.vue (с именованным представлением), AdminDashboard.vue, Users.vue, UsersCreateEdit. Итак, у меня есть 2 вида узлов и 3 вида листьев.
App.vue
<template>
<router-view name="allPageView"></router-view></template>
LytSPA.vue
<template>
<div>
<header>
<header-view></header-view>
</header>
<transition name="slide-left-aside">
<aside v-show="!collapsed">
<aside-view @collapse="collapseAside"></aside-view>
</aside>
</transition>
<transition name="slide-expand-button">
<b-button @click="collapseAside(false)" id="btnExpand" v-show="collapsed">
<font-awesome-icon icon="chevron-right"/>
</b-button>
</transition>
<section id="sectionSPA" :class="{collapsed: collapsed}">
<breadcrumb-view></breadcrumb-view>
<router-view name="sectionView" key="$route.fullPath"></router-view>
</section>
</div></template>
Как видите, в LayoutSPA.vue я удалил свои основные представления в контейнер sectionView, таким образом:
- если путь равен /, загрузите представление панели инструментов.
- если путь равен / usuarios, загрузите представление «Пользователи».
И здесь возникает проблема: когда путь - / usuarios / crear, он либо не загружает представление UsersCreateEdit, либо сохраняет последнее (Users.vue). Однако маршрутизация работает, потому что я установил проверку перенаправления для неизвестных URL-адресов, поскольку URL-адрес usuarios / crear не меняется, так что это работает, но не загружает представление.
Я уже работал таким образом с UI-Router в AngularJS, и не было никаких проблем, потому что он работает с наследованием состояний, но я хочу знать, существует ли способ сделать то же самое во Vue ???
Примечание. У меня есть альтернативное решение, но оно мне не нравится, потому что я должен указать маршрут admin.users.create как родственный элемент admin.users, а он работает, но мне нужно, чтобы он был вложенным, потому что мне нужно получить согласованные маршруты для построения моей хлебной крошки, и я не хочу анализировать путь для его создания.