2014-10-29 42 views
6

我使用的是路由器,我有孩子的狀態和一個抽象的 - 父母。AngularJS ui-router,如何獲取抽象partent狀態的解析對象中的目標狀態的名稱?

現在,我希望能夠做一些用戶角色管理,並且我想在一個地方爲所有根目錄進行操作。

做到這一點的最好辦法,是在父母的狀態決心對象。$ stateProvider

在這裏,我這樣做,以便管理應用寬度認證數據。

問題是,如何從抽象狀態的解析函數中獲得目標狀態?

.state('section', { 
     abstract: true, 
     template: '<ui-view/>', 
     resolve: { 

      // Auth & role management middleware. 
      UserData: ['$q', '$stateParams', 'Session', function ($q, $stateParams, Session) { 

       // HOW DO I GET THE DESTINATION ROUTE HERE. 
       $state.current.name - returns null 
       $stateParams - is an empty object. 
       // ANY IDEAS? 

       var userData; 
       userData = Session.getUserData(); 
       if (userData.token) { 
        return userData; 
       } 
       return $q.reject('login'); 
      }] 
     } 
    }); 

回答

2

狀態在裏面解析時沒有更新。

我目前的解決方法是通過

$rootScope.$on('$stateChangeStart', callback)

聽「$ stateChangeStart」事件這一事件的決心之前發出的,和第二PARAM傳遞給回調toState其中有您需要的信息。

你可以把這個邏輯到您的Session service

+1

它不從的觀點和未來的兼容性架構點最好的想法,但由於缺乏其他替代品,這是一個很好的解決方法!謝謝 ) – 2016-03-04 12:55:18

相關問題