所以我有这样的陈述:
users.add
现在,class LocalStorageMock {
constructor() {
this.store = {};
}
clear() {
this.store = {};
}
getItem(key) {
return this.store[key] || null;
}
setItem(key, value) {
this.store[key] = value.toString();
}
removeItem(key) {
delete this.store[key];
}
};
global.localStorage = new LocalStorageMock;
状态将出现在我的sideBar上,但我希望只有在用户具有特定角色时才会显示该状态。
这可行吗?
答案 0 :(得分:0)
您可以尝试使用resolve
。 resolve
允许您接受或拒绝承诺,并在加载状态时解决它。如果承诺被接受,您可以进入状态,如果没有,您将无法加载状态。您可以轻松编写authenticate
服务并将其注入resolve
功能。
假设您有一个执行身份验证的服务,名为AuthService
,并且您有一个User
服务来检索用户名,那么您可以执行以下操作:
.state('users.add', {
url: '/add',
templateUrl: 'app/pages/users/add/addUser.html',
title: 'Ajouter',
sidebarMeta: {
order: 0,
},
resolve:{
'RoleAuthorization':['AuthService','User',function(AuthService,User){
return AuthService.hasRole(User.username);
//or any other logic that you want to perform, as long as it returns a promise.
}]
}
});
以下是关于如何操作的plnkr。