Javascript 在另一个函数中使用$routeProvider resolve函数

Javascript 在另一个函数中使用$routeProvider resolve函数,javascript,angularjs,ngroute,Javascript,Angularjs,Ngroute,我的$routeProvider中有三个resolve promise函数。我的问题是,我可以在load函数中使用getData函数来获得HTTP请求响应吗 还将等待getData完成,然后进行加载吗?是不是在按顺序做事,等待承诺 $routeProvider.when = function(path, route) { route.resolve = { getData: ['$http', function ($http) {

我的$routeProvider中有三个resolve promise函数。我的问题是,我可以在load函数中使用getData函数来获得HTTP请求响应吗

还将等待getData完成,然后进行加载吗?是不是在按顺序做事,等待承诺

$routeProvider.when = function(path, route) {
        route.resolve = {
            getData: ['$http', function ($http) {
                var http = $http({
                    method: 'POST',
                    url: 'a URL',
                    data: {
                        route: "/something"
                    },
                    headers: {
                        'something': 'anything'
                    }
                });
                return http;
            }],
            load: [
                'getData',
                function(getData) {
                    console.log(getData);
                    // I'm Actually returning a promise here so no problem at all.
                }
            ],
            prefData: [
                '$preflightService',
                function($preflightService) {
                    console.log('Preflight Run');
                    return $preflightService.run();
                }
            ],
        };
        return originalWhen(path, route);
    };
使用上面的代码,我在控制台中得到了这个错误

Error: [$injector:unpr] http://errors.angularjs.org/1.4.12/$injector/unpr?p0=getDataProvider%20%3C-%20getData
我该怎么办


我是否应该以某种方式定义提供者

每个解析都是异步解析的。如果希望“getData”返回的数据用于解析“load”请求,请将其设置为单个解析,如下所示:

loadData:['$http',函数($http){
返回$http({
方法:“POST”,
url:“一个url”,
数据:{
路线:“/某物”
},
标题:{
“某物”:“任何东西”
}
}).然后(功能(响应){
//getData结果在此处可用
return//在此处返回负载承诺
});
}
如果需要,可以将成功处理程序(
.then(function(){})
附加到加载承诺,并返回一个包含getData结果和加载结果的自定义对象,如

return {
 getData: getResp,
 loadedData: loadResp
}
这将在控制器中可用