例如,我有一个控制器向用户显示列表视图,有些列需要数据来自另一个端点,所以我用直觉写了这些,你能告诉我如何重新制作它们吗?
$http.get($scope.urlA)
.success(function(res){
$scope.dataA = res.data;
$http.get($scope.urlB)
.success(function(res){
$scope.dataB = res.data;
})
.error(function(err){
if (err) throw err;
});
})
.error(function(err){
if (err) throw err;
});
答案 0 :(得分:2)
然后最好的做法是为两个$ http.get调用创建两个工厂方法。在Angular $ http中自己调用promises,因此你的工厂看起来像:
myapp.factory('getHttpData',function($http){
return{
getURLA:function(){
return $http.get('/urlA');
},
getURLA:function(){
return $http.post('/urlB');
}
}
});
然后在Controller中,您可以调用这两个工厂函数:
.controller('testCtrl',['getHttpData',function(getHttpData){
getHttpData.getURLA().then(function(data){
//do whatever you want
getHttpData.getURLB().then(function(Bdata){
//do whatever you desire
}):
});
});
答案 1 :(得分:0)
第二次调用看起来不像第一次,所以你可以单独调用它们:
$scope.data = {};
$http.get('http://example/url/a')
.success(function(data) {
$scope.data.a = data;
});
$http.get('http://example/url/b')
.success(funciton(data)) {
$scope.data.b = data;
});
如果呼叫b依赖于来自呼叫a的数据,则呼叫服务b来自呼叫成功回叫。