Sunday, March 27, 2016

How to add pagination in Restangular and Django Rest Framework?

Leave a Comment

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

If You Enjoyed This, Take 5 Seconds To Share It

0 comments:

Post a Comment