如何将新结果添加到现有变量?

时间:2015-05-12 14:58:33

标签: javascript ajax json angularjs

我从服务器获取前十个对象并将其存储在$ scope.data中。它看起来像这样:

$scope.check = function(search, count) {                    
    request.getData(search, count).success(function(response) {
        $scope.data = response;
    });
};

当用户向下滚动时,我想将下十个对象添加到$ scope.data,并使用ng-repeat在html中重复这20个对象。后来30,40等。

  <ul scroll>
    <li ng-repeat="element in data">
      {{element.id}}
      {{element.name}}
      {{element.surname}}
    </li>
  </ul>

这是我的php:

   while ($data = mysqli_fetch_array($result)) {    
    $array[] = array("id"=>(int) $data['ID'], "name"=>$data['FirstName'], "surname"=>$data['LastName'], "mobile"=>$data['MobilePhone']);
   }
   echo json_encode($array);

它返回的内容如下:

[{"id":885,"name":"Jeremy","surname":"Goodrow","mobile":"+48-792-518-774"},{"id":886,"name":"Noella","surname":"Modestino","mobile":"+48-792-518-774"},{"id":887,"name":"Lief","surname":"Regoli","mobile":"+48-792-518-774"}]

所以,我的问题是:如何将新的十个结果添加到现有变量($ scope.data)?当我第一次添加它时,我会这样做并且效果很好:

$scope.data = response;

但是我该如何向这个变量添加新的十个结果呢?每次来自服务器的响应都是相同的。我不能做这样的事情,因为它不起作用:

$scope.data += response;

此外,我无法将响应推送到$ scope.data,因为ng-repeat显示如下: enter image description here

Resulst没有分开。请帮我。也许,我必须将元素推送到$ scope.data,但是我必须在ng-repeat中改变什么?我不知道。

1 个答案:

答案 0 :(得分:0)

您可以使用本机数组函数concat:

var recievedData = []; //at the begining

$http.get('/url').success(function (responseData) {
  $scope.data = recievedData.concat(responseData);
});

但是当来自服务器的数据已经在本地数据变量中时,请尽量避免这种情况。然后,您需要使用underscorelodash来保持其清洁和独特。