角度路由 - 等待先前的解决方案

时间:2015-02-24 13:14:06

标签: angularjs angular-routing resolve route-provider

我的角度路线如下:

    $routeProvider.when('/admin/:one/:two/:three?', {
        templateUrl: '/app/partials/admin.html',
        controller: 'AdminCtrl',
        resolve: {
            login: function(LoginService) {
                return LoginService.login();
            },
            admin: function($route, LoginService) {
                return LoginService.admin($route.current.params.one, $route.current.params.two, $route.current.params.three);
            }
        }
    });

问题是第二个解析,admin,取决于第一个解析完成(LoginService.admin()调用ensureAuthenticated,这需要LoginService.login()完成,否则它就会失败)。

有没有办法告诉管理员决定等待登录解析?

感谢您提供的任何帮助/建议。

1 个答案:

答案 0 :(得分:1)

如果您将第一个解析结果(在您的情况下为login)注入第二个解析,那么该解析将被延迟,直到加载该值。如果未加载或出现错误,则不会触发:

$stateProvider.state('/admin/:one/:two/:three?', {
        templateUrl: '/app/partials/admin.html',
        controller: 'AdminCtrl',
        resolve: {
            login: function(LoginService) {
                return LoginService.login();
            },
            admin: function($route, LoginService, login) { //here we injected login
                return LoginService.admin($route.current.params.one, $route.current.params.two, $route.current.params.three);
            }
        }
    });

编辑:更改了答案,目前我只知道这与$stateProvider一起使用。