【问题标题】:How can I add new results to an existing variable?如何将新结果添加到现有变量?
【发布时间】:2015-05-12 14:58:33
【问题描述】:

我从服务器获取前十个对象并将其存储在 $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 显示如下:

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

【问题讨论】:

  • 点赞$scope.data = $scope.data.concat(response);

标签: javascript ajax json angularjs


【解决方案1】:

可以使用原生数组函数concat:

var recievedData = []; //at the begining

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

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

【讨论】:

  • array.concat : concat() 方法返回一个 new 数组,所以如果你简单做 concat $scope.data 没有改变
  • 是的,对不起,$scope.data = $scope.data.concat(responseData);
猜你喜欢
  • 1970-01-01
  • 2018-11-13
  • 1970-01-01
  • 2021-07-12
  • 2015-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多