In DRF I have added pagination limit to 100 'PAGINATE_BY': 100,
since Restangular expects results in array form, I had to use the below meta extractor function in my angular app module
var app = angular.module("myapp", ["restangular"].config(function( RestangularProvider){ RestangularProvider.setResponseExtractor(function(response, operation, what, url) { if (operation === "getList") { var newResponse = response.results; newResponse._resultmeta = { "count": response.count, "next": response.next, "previous": response.previous }; return newResponse; } return response; }); });
and my controller looks like
app.controller('DataCtrl',function($scope, Restangular){ var resource = Restangular.all('myapp/api/dataendpoint/'); resource.getList().then(function(data){ $scope.records = data; }); }
Meta info is not available in controller, how do I paginate if there are more than 100 records available?
1 Answers
Answers 1
I suppose you could simply call:
RestangularProvider.addResponseExtractor(function(data, operation, what, url, response) { if (operation === "getList") { data._resultmeta = { "count": response.count, "next": response.next, "previous": response.previous }; return data; } return response; });
and
var page = 2; var resource = Restangular.all('myapp/api/dataendpoint/'); resource.getList({page: page}).then(function(data){ console.log(data._resultmeta.next ? 'there is more pages' : 'You reach the end'); });
I'm not usual with Rectangular
but Django Rest Framework support pagination from query parameter
0 comments:
Post a Comment