2016-11-16 58 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'); 
}); 

它的工作!