我有一个简单的管理页面,可以执行以下操作:
beforeModel: function() {
var permission = this.get('userService.currentUser.userPermission.isAdmin');
if(!permission) {
console.log("no permission");
return this.transitionTo('index');
}
},
User和UserPermission是单独的模型。 UserPermission加载为异步。
如果我导航到/ admin(权限对象已经被缓存),这很有用,但是如果我直接进入/ admin,则可能是因为没有加载userPermission对象。
有没有办法说“获取userPermission然后评估”?
答案 0 :(得分:1)
如果假设this.get('userService.currentUser')
返回Promise,那么你可以这样做,因为beforeModel
将在调用模型钩子之前解析异步操作。
beforeModel: function() {
return this.get('userService.currentUser').then((userPermission) => {
if (!userPermission.isAdmin) {
this.transitionTo('index');
}
});
}