2016-11-16 62 views
0

现在我想在加载ui-view在angularjs之前检查用户的权限。 我route.js是这样的:Angularjs ui route:在加载视图之前检查权限

$stateProvider.state('app.test', { 
     url: '/test', 
     component: 'test', 
     resolve: { 
     delay: function ($q, $http, $window, $state, $timeout) { 
      var delay = $q.defer(); 
      var token = $window.localStorage.getItem('token'); 
      $http({ 
      url: "url get profile here", 
      method: "GET", 
      headers: { 
      'Authorization': token 
      } 
      }) 
      .success(function(response) { 
      }) 
      .error(function(response) { 
      $state.go('logout'); 
      }); 
      delay.resolve(); 
      return delay.promise; 
     } 
     } 
    }) 

而且在模板的html:

<ui-view name="header"></ui-view> 
<ui-view name="sidebar"></ui-view> 

的问题是:当我编辑本地存储方式变得不正确$state.go('logout');工作。但在模板ui-view已经调用函数名称为headersidebar控制器。在检查许可完成之前,如何从ui-view阻止访问控制器?

回答

0

这是错误,因为我推delay.resolve();不完全。我的代码将变为:

.success(function(response) { 
      delay.resolve(); 
}) 
.error(function(response) { 
      delay.reject(); 
      $state.go('logout'); 
}); 

它的工作!