AngularJS ui路由器,如何在抽象部分状态的解析对象中获取目标状态的名称



我使用的是ui路由器,我有子状态和一个抽象状态-父状态。

现在,我想能够做一些用户角色管理,我想在一个地方为所有的根做这件事。

最好的方法是在父对象的状态下解析对象$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');
            }]
        }
    });

解析内部时,状态尚未更新。

到目前为止,我的解决方法是通过收听"$stateChangeStart"事件

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

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

您可以将此逻辑放入Session service

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

最新更新