每当调用函数时,如何将元素推送到数组中?

How can I push element in an array whenever a function get called?

我正在实现无限滚动。我有一个名为 hotels 的数组,它从 $http.get() 方法获取数据。现在我想用 hotels 数组的值填充一个名为 hotelsNew[] 的新 array。但是我想在mjhotelsNew增量值中推送值。

每当函数loadMore()被调用时,mj的值需要更新(递增)。 m 的初始值为 0,j 为 5。当 loadMore() 被调用时,m 再次为 5,j 为 10,依此类推。

我无法在任何地方保存 mj 的值,因为 $http.get() 是异步的。是否有任何正确的方法来保存 mj 的值,并在再次调用 loadMore() 时重用它?最大j值为40。当m = j(40)时,它会停止。

这是我的控制器代码。

 $scope.loadMore = function() {
      $http.get(url).success(function(data, status, headers, config) {
        if(data) { 
          $scope.hotels = data.hotels;
            for(var i = m; i < j; i++) {
              console.log('i=',i);
              $scope.hotelsNew.push($scope.hotels[i]);
              console.log('hotelsNew',$scope.hotelsNew);
            }
         }
     }

如何增加 mj 的值?有什么想法吗?

查看推送数组的示例:

var fruits = ["Banana", "Orange", "Apple", "Mango"];

fruits.push("Kiwi");

使用

获取数据长度

$s=Array.sizeof($data)

for($i<0;$i<=$s;$i++){//task here}

使用 promise 避免异步调用

$scope.loadMore = function() {
  $http.get(url).then(function(data) {
    if(data) { 
      $scope.hotels = data.hotels;
        for(var i = m; i < j; i++) {
          console.log('i=',i);
          $scope.hotelsNew.push($scope.hotels[i]);
          console.log('hotelsNew',$scope.hotelsNew);
        }
     }
 }

如果mj每次递增相同的量,您可以在控制器中创建一个局部变量。

var m = 0, j = 5;
$scope.loadMore = function() {
    $http.get(url).success(function(data, status, headers, config) {
        if(data && j < 40) { 
            $scope.hotels = data.hotels;
            for(var i = m; i < j; i++) {
                console.log('i=',i);
                $scope.hotelsNew.push($scope.hotels[i]);
                console.log('hotelsNew',$scope.hotelsNew);
            }
            m += 5;
            j += 5;
        }
    }
}