我正在实施无限滚动。我有一个名为hotels
的数组,它从$http.get()
方法获取数据。现在,我想填充一个名为array
的新hotelsNew[]
,其值为hotels
数组。但我希望在hotelsNew
递增值m
和j
中推送值。
每当调用函数m
时,j
和loadMore()
的值都需要更新(递增)。 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
值?任何想法?
答案 0 :(得分:1)
如果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;
}
}
}
答案 1 :(得分:0)
使用承诺避免异步调用
$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);
}
}
}
答案 2 :(得分:-1)
请参阅推送数组的示例:
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.push(&#34;猕猴桃&#34);
使用
获取数据长度$ S = Array.sizeof($数据)
for($i<0;$i<=$s;$i++){//task here}