每当调用函数时,如何将元素推送到数组中?
How can I push element in an array whenever a function get called?
我正在实现无限滚动。我有一个名为 hotels
的数组,它从 $http.get()
方法获取数据。现在我想用 hotels
数组的值填充一个名为 hotelsNew[]
的新 array
。但是我想在m
和j
的hotelsNew
增量值中推送值。
每当函数loadMore()
被调用时,m
和j
的值需要更新(递增)。 m
的初始值为 0,j
为 5。当 loadMore()
被调用时,m
再次为 5,j
为 10,依此类推。
我无法在任何地方保存 m
和 j
的值,因为 $http.get()
是异步的。是否有任何正确的方法来保存 m
和 j
的值,并在再次调用 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);
}
}
}
如何增加 m
和 j
的值?有什么想法吗?
查看推送数组的示例:
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);
}
}
}
如果m
和j
每次递增相同的量,您可以在控制器中创建一个局部变量。
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;
}
}
}
我正在实现无限滚动。我有一个名为 hotels
的数组,它从 $http.get()
方法获取数据。现在我想用 hotels
数组的值填充一个名为 hotelsNew[]
的新 array
。但是我想在m
和j
的hotelsNew
增量值中推送值。
每当函数loadMore()
被调用时,m
和j
的值需要更新(递增)。 m
的初始值为 0,j
为 5。当 loadMore()
被调用时,m
再次为 5,j
为 10,依此类推。
我无法在任何地方保存 m
和 j
的值,因为 $http.get()
是异步的。是否有任何正确的方法来保存 m
和 j
的值,并在再次调用 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);
}
}
}
如何增加 m
和 j
的值?有什么想法吗?
查看推送数组的示例:
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);
}
}
}
如果m
和j
每次递增相同的量,您可以在控制器中创建一个局部变量。
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;
}
}
}