Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 在$http.get中迭代_Angularjs_Loops_Http_Get - Fatal编程技术网

Angularjs 在$http.get中迭代

Angularjs 在$http.get中迭代,angularjs,loops,http,get,Angularjs,Loops,Http,Get,我有一段代码,每个请求显示20个项目 .controller('ActorController',function($scope,$http) { $scope.getActors = function () { var actors = $http.get(https://api.themoviedb.org/3/person/popular&page=1); actors.then( function (respons

我有一段代码,每个请求显示20个项目

.controller('ActorController',function($scope,$http) {

    $scope.getActors = function () {
        var actors = $http.get(https://api.themoviedb.org/3/person/popular&page=1);
        actors.then(
            function (response) {
                $scope.actors = response.data.results;
            }             
        );
    }
})
如果我把page=2,我将得到另一组20项,以此类推,而不是page=1。如果我希望在一个页面中有多个get请求,如何在$http.get中进行迭代?我想在显示第一个20项之后显示第二个20项。

您可以使用$q.all一次发送多个http请求

var fulAr = [];
for (var i = 1; i <= 2; i++) {
    fulAr.push($http.get("https://api.themoviedb.org/3/person/popular&page=" + i))
}
$q.all(fulAr).then(function(response) {
    console.log(response[0].data) //page 1 content
    console.log(response[1].data) //page 2 content

    for(var j = 0; j < response.length; j++) {
       $scope.actors = $scope.actors.concat(response[j].data.results); 
    }
})

确保将$q注入控制器

所以您是说要在循环中多次调用$http.get?如果是这样,你会这样做:

.controller('ActorController',function($scope,$http) {

    $scope.getActors = function () {
        for(var i = 0; i < 5; i++) {
            getPage(i);
        }
    }

    function getPage(i) {
       var actors = $http.get('https://api.themoviedb.org/3/person/popular&page=' + i);
       actors.then(function (response) {
           for(var j = 0; j < response.data.results.length; j++) {
               $scope.actors.push(response.data.results[j]);
           }
       });
    }
})

这将把前5页的数据放入$scope.actors数组。

FYI,我认为@sachila ranawaka的答案可能更好。@SJ94再次检查答案。非常感谢。