我有一个简单的角度$ 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
});
答案 0 :(得分:1)
为什么不看你的变量,在这种情况下是$ scope.id,如下所示:
$scope.$watch('id', function() {
// Http request goes here
$http.get(...)
});
当您为$ scope.id分配任何值时,您的"监视功能"将被触发。
答案 1 :(得分:0)
可以使用回调来使其更清晰。将您的通话包裹在一个功能中:
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).....
});
});
答案 2 :(得分:0)
使用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.
});