从侧边栏显示/隐藏状态

时间:2017-01-03 00:01:52

标签: javascript angularjs angular-ui-router

所以我有这样的陈述:

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上,但我希望只有在用户具有特定角色时才会显示该状态。

这可行吗?

1 个答案:

答案 0 :(得分:0)

您可以尝试使用resolveresolve允许您接受或拒绝承诺,并在加载状态时解决它。如果承诺被接受,您可以进入状态,如果没有,您将无法加载状态。您可以轻松编写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