【发布时间】:2018-06-22 16:03:37
【问题描述】:
我有一个命名的视图路线:
let routes = [
{
name: "home",
path: '/',
components: {
default: Home,
project: ProjectIndex
}
}
]
我想根据用户角色保护“项目”路由,但任何人都可以访问默认主页。
我将这个添加到 ProjectIndex 组件中:
beforeRouteEnter (to, from, next) {
var user = Spark.state.user;
if(user.current_role == 'admin' || user.current_role == 'owner'){
next();
}
}
但路由器也在 Home 组件上执行此代码,因此 Home 也受此影响。
我不认为这么简单的事情在 Vue js 中应该这么难。
如果我console.log(to) 我得到了路线,但没有告诉我将呈现哪个组件。我在这里碰壁了。请帮忙。
【问题讨论】:
-
对于任何寻找这个的人,答案是这些是“嵌套”命名视图,因此路由被视为相同,v-if 将条件渲染所以我的解决方案是使用 created()与 v-if 挂钩,您甚至可以使用 $router.push 重定向到另一条路由。
标签: javascript vue.js babeljs vue-router