AngularJS ui-router,如何在抽象的partent状态的resolve对象中获取目标状态的名称?

时间:2014-10-29 14:30:02

标签: angularjs

我正在使用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');
            }]
        }
    });

2 个答案:

答案 0 :(得分:2)

内部解析时

状态尚未更新。

到目前为止,我的解决方法是通过

收听'$ stateChangeStart'事件

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

此事件在解决之前发出,第二个传递给回调的参数是toState,其中包含您需要的信息。

您可以将此逻辑放入Session service

答案 1 :(得分:0)

我知道这已经很老了,但是请使用$state.next.name来获得目标状态。