2014-10-29 70 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

相关问题