嵌套的角度http.get调用

时间:2014-03-23 18:22:48

标签: javascript json angularjs scope

我有一个简单的角度$ 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
});

3 个答案:

答案 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.
});
相关问题