[英]nested angular http.get calls
我有一个简单的有角$ http.get,它返回一个json对象,但是我希望json中的id可以执行另一个$ http.get。 我可以通过在第一个$ http.get中嵌套另一个来实现此目的,但这似乎很愚蠢。 将响应的ID data.id分配给变量的最佳方法是什么? 我在可变范围方面遇到了一些问题; 尝试简单地将值分配给变量。
$http.get('/api/v1/foo/userinfo?thunk='+thunk+'&bar='+bar).success(function(data) {
$scope.id = data.id
}).then(function(data){
$scope.id = data.data.id
});
您为什么不看您的变量,在这种情况下,像这样的$ scope.id:
$scope.$watch('id', function() {
// Http request goes here
$http.get(...)
});
当您为$ scope.id分配任何值时,将触发“监视功能”。
可以使用回调使它更整洁。 将您的呼叫包装在一个函数中:
function startAJAX(thunk, bar, callback) {
$http.get('/api/v1/foo/userinfo?thunk='+thunk+'&bar='+bar).success(function(data) {
callback(data.id);
});
}
然后拨打电话并进行下一个http通话:
startAJAX(thunk, bar, function(id) {
$http(id).....
});
});
不需要使用watch()方法。 使用回调,或者如果您想花哨的话,请使用诺言使事情井井有条。
var callOnePromise = $http.get('/api/foo');
var callTwoPromise;
callOnePromise.success(function(data) {
callTwoPromise = $http.get('/api/bar/' + data.id);
});
callTwoPromise.success(function() {
//Cool stuff here.
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.