在另一个内部使用 $routeProvider 解析函数
Use a $routeProvider resolve function inside another one
我的 $routeProvider 中有三个 resolve promise 函数。我的问题是我可以在加载函数中使用 getData 函数来获取 HTTP 请求响应吗?
还会angular等待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' 编辑的数据 return 用于解析 'load' 请求,请将其设为单一解析,如下所示:
loadData: ['$http', function($http) {
return $http({
method: 'POST',
url: 'a URL',
data: {
route: "/something"
},
headers: {
'something': 'anything'
}
}).then(function(response){
// getData result available here
return // Return the load promise here
});
}
如果需要,您可以将成功处理程序(.then(function(){})
附加到加载承诺和 return 包含 getData 结果和加载结果的自定义对象,例如
return {
getData: getResp,
loadedData: loadResp
}
控制器中可用。
我的 $routeProvider 中有三个 resolve promise 函数。我的问题是我可以在加载函数中使用 getData 函数来获取 HTTP 请求响应吗?
还会angular等待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' 编辑的数据 return 用于解析 'load' 请求,请将其设为单一解析,如下所示:
loadData: ['$http', function($http) {
return $http({
method: 'POST',
url: 'a URL',
data: {
route: "/something"
},
headers: {
'something': 'anything'
}
}).then(function(response){
// getData result available here
return // Return the load promise here
});
}
如果需要,您可以将成功处理程序(.then(function(){})
附加到加载承诺和 return 包含 getData 结果和加载结果的自定义对象,例如
return {
getData: getResp,
loadedData: loadResp
}
控制器中可用。