I’ve been working on this infinite scroll for the past few days and i managed to get older posts via $http get. However, i encountered issues in both Try 1 and 2 below. I’m kinda loss now…
I take reference from these 2 sites mainly.
[Issue Beta.14: ion-infinite-scroll keep on calling the method of on-infinite][1]
[ionic framework infinite scroll with http get data][2]
[1]: [Resolved] Issue Beta.14: ion-infinite-scroll keep on calling the method of on-infinite
[2]: http://stackoverflow.com/questions/26414326/ionic-framework-infinite-scroll-with-http-get-data
Here are my codes:
Try 1: The infinite scroll keeps on going forever even when there are no more older posts.
In HTML
<ion-infinite-scroll ng-if="!noMoreItemsAvailable" on-infinite="loadMore()" distance="20%"></ion-infinite-scroll>
In Controller
.controller ('MyController', function($scope, $http) {
$scope.posts = [];
$scope.page=1;
//$scope.noMoreItemsAvailable = false;
$scope.loadMore = function() {
$http.get('http://alternary.com/demo/dbxapp/wp-json/posts?page='+$scope.page).success(function(items) {
var i = items.length;
//document.write(i);
$scope.posts = $scope.posts.concat(items);
$scope.posts.push(items);
console.log(items);
$scope.$broadcast('scroll.infiniteScrollComplete');
//$scope.noMoreItemsAvailable = true;
console.log($scope.page);
$scope.page +=1;
});
};
})
Try 2: I used $scope.noMoreItemsAvailable but now the infinite scroll did not work. No older post is retrieved.
In HTML (no changes)
<ion-infinite-scroll ng-if="!noMoreItemsAvailable" on-infinite="loadMore()" distance="20%"></ion-infinite-scroll>
In Controller
.controller ('MyController', function($scope, $http) {
$scope.posts = [];
$scope.page=1;
$scope.noMoreItemsAvailable = false;
$scope.loadMore = function() {
$http.get('http://alternary.com/demo/dbxapp/wp-json/posts?page='+$scope.page).success(function(items) {
var i = items.length;
//document.write(i);
$scope.posts = $scope.posts.concat(items);
$scope.posts.push(items);
console.log(items);
$scope.$broadcast('scroll.infiniteScrollComplete');
$scope.noMoreItemsAvailable = true;
console.log($scope.page);
$scope.page +=1;
});
};
})