迭代$ http.get

时间:2017-03-31 04:05:31

标签: 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 (response) {
                $scope.actors = response.data.results;
            }             
        );
    }
})

而不是page = 1,如果我把page = 2,我将得到另外一组20个项目,依此类推。如果我想在一个页面中获得超过1个get请求,如何在$ http.get内迭代?我希望在显示第一个20后显示第二个20项。

2 个答案:

答案 0 :(得分:1)

所以你说你想在循环中多次调用$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数组。

答案 1 :(得分:0)

您可以使用class Teacher(models.Model): User = models.OneToOneField(settings.AUTH_USER_MODEL) 一次发送多个http请求

$q.all

确保将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); } }) 注入控制器