I'm trying to create a basic pagination. Backend is ready and tested. Each page contains 10 activity.
/feed/1 -> displays 0-10
/feed/2 -> displays 10-20
/feed/3 -> displays 20-30
I want to start at 1 and increment page number by one (and load that page's data into page) when the button is clicked, but I can't see anything on the page when I view it. incr() also doesn't work, throws
TypeError: t.data.push is not a function
error. (I use Gulp)
What is the problem here?
Url routing (I use ui-router's resolve feature)
angular.module('site.feed.routes')
.run(
['$rootScope', '$state', '$stateParams',
function($rootScope, $state, $stateParams) {
$rootScope.$state = $state;
$rootScope.$stateParams = $stateParams;
}
]
)
.config(
['$stateProvider', '$urlRouterProvider', '$locationProvider',
function($stateProvider, $urlRouterProvider, $locationProvider) {
$locationProvider.html5Mode({
enabled: true,
requireBase: false
});
$stateProvider
.state('posttest', {
url: '/feed',
templateUrl: 'feed.html',
resolve: {
data: 'PostData',
},
controller: 'PostController'
});
}
]
);
Factory
angular.module('site.feed').factory('PostData', ["$http", function($http) {
return {
getPage: function(pageNumber) {
return $http.get('/feed/' + pageNumber).then(function(response) {
return response.data;
});
}
};
}]);
Controller
angular.module('site.feed').controller('PostController', ['$scope', 'data', 'PostData', function($scope, data, PostData) {
$scope.page = 1;
$scope.data = data; // first page
$scope.incr = function() {
$scope.page++;
PostData.getPage($scope.page).then(function(returned) {
$scope.data.push(returned.data);
});
};
}]);
feed.html
<div ng-repeat="feedflow in data">
<div ng-repeat="ehe in feedflow.feed">
{{feedflow.id}}
{{ehe.status}}
</div>
</div>
{{page}}
<button ng-click="incr()">Increment by one</button>
/feed/:countroute? And then access its value through$stateParams.count