我正在使用ui-router,我有子状态和抽象状态 - 父母。
现在,我希望能够进行一些用户角色管理,我希望在一个地方完成所有根目录。
最好的方法是在父级的状态解析对象中。$ stateProvider
在这里,我这样做是为了管理app宽度认证数据。
问题是,如何从抽象状态的resolve函数中获取目标状态?
.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');
}]
}
});
答案 0 :(得分:2)
状态尚未更新。
到目前为止,我的解决方法是通过
收听'$ stateChangeStart'事件 $rootScope.$on('$stateChangeStart', callback)
此事件在解决之前发出,第二个传递给回调的参数是toState
,其中包含您需要的信息。
您可以将此逻辑放入Session service
答案 1 :(得分:0)
我知道这已经很老了,但是请使用$state.next.name
来获得目标状态。