我仍然是AngularJS的新手,并且正在努力解决以下问题。
我有很多我需要使用的网络服务,其中很多网站服务依赖另一方的数据来成功拨打下一个电话。
例如,第一个Web服务将检索个人档案列表。
ip.controller("ProfilesCtrl", function($scope, $http) {
$http.post("Profile_List.asp").success(function(data) {
$scope.profiles = data;
}).error(function() {
alert("An unexpoected error ocurred while loading profiles!");
});
});
Profiles返回一个JSON对象。 返回的数据:
{
"Success": true,
"ErrorMessage": "",
"Objects": [{
"GUID": "208FF69D-A4EB-4760-B2ED-414C900F4AAC",
"Name": "John Doe",
"Status": false
}, {
"GUID": "BC5C53FD-5CA7-4DBE-8594-D26AD88B758B",
"Name": "Jane Doe",
"Status": true
}, {
"GUID": "2FCD677B-DA36-4014-823A-9BDD1A72AD66",
"Name": "Anonymous",
"Status": true
}]
}
好的,所以在我进行初始调用之后,我需要将每个Profile Object的GUID发送到另一个Web服务。此服务将使用GUID来确定该特定配置文件的ID。
来自第二个Web服务的数据将仅返回第一个呼叫的GUID的ID。
如何链接这些$ http电话?创建一个新的json对象并使用那里的数据会更好吗?
我在使用ajax之前已经完成了这个。
*关于我的控制器代码的另一个问题,就是这样很好,或者作为服务,提供商或工厂做$ http呼叫会更好吗?我该怎么做呢?
获得上述AngularJS代码的任何帮助/链接都将不胜感激。
请询问是否有任何不清楚的地方。
答案 0 :(得分:2)
只需在“成功”处理程序中调用执行下一个调用。
$http.post("Profile_List.asp").success(function(data) {
$scope.profiles = data;
//first call succeeded, and we have the data. call method 2
executeStep2($scope.profiles);
})
function executeStep2(profiles)
{
$http.post("second_method") // etc. (you can just send profiles as post data here)
}