我正在创建一个vuejs应用程序,在其中我希望具有两种不同的布局,例如一种用于用户界面,另一种用于管理界面。 在用户界面中,我有一个名为“管理面板”的按钮,单击该按钮即可进入管理端并呈现新的布局。到目前为止,我已经完成了以下操作:
我已在src中创建了一个容器文件夹以保留布局文件
还有一个路由器文件夹,用于保存路由文件
<template>
<v-app>
<h4>User Layout</h4>
<router-view></router-view>
</v-app>
</template>
<script>
export default {
}
</script>
<template>
<v-app>
<h4>Admin Layout</h4>
<router-view></router-view>
</v-app>
</template>
<script>
export default {
}
</script>
import UserPanel from 'Container/UserPanel';
const HomeV1 = () => import('Views/HomeV1');
const HomeV2 = () => import('Views/HomeV2');
const HomeV3 = () => import('Views/HomeV3');
export default{
path: '/',
component: UserPanel,
redirect:'/home',
children:[
{
path: '/',
component: HomeV1 ,
meta: {
header: 1
}
},
{
path: '/home',
component: HomeV1 ,
meta: {
header: 1
}
},
{
path: '/home-two',
component: HomeV2 ,
meta: {
header: 2
}
},
{
path: '/home-three',
component: HomeV3 ,
meta: {
header: 3
}
}
]
}
import Admin from 'Container/Adminpanel.vue';
const Reports = () => import('Views/AdminPanel/Reports.vue');
const Invoice = () => import('Views/AdminPanel/Invoices.vue');
const AdminAccount = () => import('Views/AdminPanel/Account.vue');
export default{
path: '/admin-panel',
component: Admin,
redirect:'/admin-panel/reports',
children:[
{
path: '/admin-panel/reports',
component: Reports,
name:'Reports'
},
{
path: '/admin-panel/invoices',
component: Invoice,
name:'Invoice'
},
{
path: '/admin-panel/products',
component: AdminProducts,
name:'AdminProducts'
}
]
}
import Vue from 'vue'
import Router from 'vue-router'
import userRoutes from './user';
import adminRoutes from './admin';
Vue.use(Router)
export default new Router({
mode: 'history',
routes: [
userRoutes,
adminRoutes
]
})
现在只有我的用户路由有效。要显示admin的页面,我必须将其路线放置在user.js中,然后,它呈现用户的布局而不是admin的布局。
谢谢。
答案 0 :(得分:1)
我以前玩过这个游戏,我做的方法是根据route meta field ...
因此,当您定义路线时,可以添加一个元字段:
path: '/admin-panel/reports',
component: Reports,
name:'Reports',
meta: { template: 'admin' }
然后,您需要检查路由的更改。最简单的方法是在全局导航控件中(如示例在其页面上所示)。如果它检测到它是管理页面,它将更改Vuex属性,该属性将切换您正在使用的模板。
最后,我将停止使用此方法,并使用包装程序组件(admin / user / etc)包装我的所有页面,以便可以控制Vue本身的所有内容。这主要是由于Vue Router在等待用户通过身份验证方面的限制,尽管这对您来说可能不是问题。