Vue路由对象属性 .meta $route.matched
$route.fullPath路由是:/path/:type真正路径是:/path/listpath匹配路径:/path/listfullPath匹配路由:/path/:type路由元信息 .metaconst router = new VueRouter({routes: [{path: '/foo',...
·
- $route.fullPath
- 路由是:/path/:type真正路径是:/path/list
- path匹配路径: /path/list
- fullPath匹配路由: /path/:type
- 路由元信息 .meta
const router = new VueRouter({
routes: [
{
path: '/foo',
component: Foo,
children: [
{
path: 'bar',
component: Bar,
// a meta field
meta: { requiresAuth: true ,keepAlive:true}//1.权限 2.内存缓存,单页面切换
}
]
}
]
})
先理解什么是路由记录 : 路由记录就是 routes
配置数组中的对象副本 (还有在 children
数组)。
上方代码中的路由记录见下方:
//一级路由
{
path: '/foo',
component: Foo,
children: [
{
path: 'bar',
component: Bar,
// a meta field
meta: { requiresAuth: true ,keepAlive:true}//1.权限 2.内存缓存,单页面切换
}
]
}
//一级路由的子路由
{ path: 'bar',component: Bar,meta: { requiresAuth: true ,keepAlive:true } }
//两者都是 路由记录
- 定义路由的时候可以配置
meta
字段 - 根据上面的路由配置,
/foo/bar
这个 URL 将会匹配父路由记录以及子路由记录 - 一个路由匹配到的所有路由记录会暴露为
$route
对象 (还有在导航守卫中的路由对象) 的$route.matched
数组。 - 检查路由记录中的
meta
字段 ,我们需要遍历$route.matched
- $route.matched
- 一个数组,包含当前路由的所有嵌套路径片段的路由记录
- 一个路由匹配到的所有路由记录会暴露为
$route
对象 (还有在导航守卫中的路由对象) 的$route.matched
数组
- 路由元信息 .meta $route.matched 搭配路由守卫 进行验证
router.beforeEach((to, from, next) => {
if (to.matched.some(record => record.meta.requiresAuth)) {
// this route requires auth, check if logged in
// if not, redirect to login page.
if (!auth.loggedIn()) {
next({
path: '/login',
query: { redirect: to.fullPath }
})
} else {
next()
}
} else {
next() // 确保一定要调用 next()
}
})
更多推荐
已为社区贡献3条内容
所有评论(0)