Pageable Collection for Backbone
Inspired by backbone-pageable, simple pagination replacement for Backbone.Collection.
Nothing too special, i'd recommend checking source code for more details, but all in all, this is just a
normal Collection with extra functions that you can use to fetch required paginated data from the server and
render simple pagination links whenever you want.
Comes with a reasonable defaults which would allow you to use Pageable Collection from the get go with
only several lines of extra backend code.
How to use
1. Add link after backbone:
<script src="pageable-collection.min.js"></script>
2. Back end setup:
Pageable Collection accepts 3 types of responses from the server.
a) JSON response with state and items.
{
state: {
total: 30
},
items: []
}
b) JSON response with models. Suited towards bassic pagination, when you provide
perPage + 1 items where extra item is an indicator that next page is available.
[{id: 1, title: 'Foo'}, {id: 2, title: 'Bar'}]
c) JSON response with models + HTTP headers with state data.
[{id: 1, title: 'Foo'}, {id: 2, title: 'Bar'}]
Available Headers are: X-Total
, X-PerPage
, X-CurrentPage
.
3. Use instead of default Backbone.Collection:
var UsersCollection = Backbone.PageableCollection.extend({
url: 'http://example.com/users'
});
var users = new UsersCollection;
users.fetchPage(1, {reset: true});
users.on('reset', this.render, this);
render: function(collection) {
collection.each(function(model) {
});
collection.getItems().each(function(item) {
});
this.$el.append(collection.links().el);
}
That's it for now. I'll be adding better readme in the future, for now read code.