微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

我使用的是ui-router,我有子状态和抽象状态 – 父母.

现在,我希望能够进行一些用户角色管理,我想在一个地方为所有根目录进行管理.

最好的方法是在父级的状态解析对象中.$stateProvider

在这里,我这样做来管理app宽度认证数据.

问题是,如何从抽象状态的解析函数获取目标状态?

.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)

此事件在resolve之前发出,第二个param传递给callback是toState,它具有您需要的信息.

您可以将此逻辑放入Session服务中

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐