Backbone.js Fetching a more complex data and using as a collection
backbone.js
Solution
As @asawyer mentioned, you have to override the parse method, but you don't need to actually instantiate each item, Backbone can do that for you if you return the array of items.
See the documentation for collection.parse
parse `collection.parse(response)`
parse is called by Backbone whenever a collection's models are returned by the server, in fetch. The function is passed the raw response object, and should return the array of model attributes to be added to the collection.
Your code could be written as
var ItemCollection = Backbone.Collection.extend({
model: Item,
url: '/some/ajax/url',
parse: function(data) {
this.page=data.page;
return data.items;
}
});
Problem
Assume I have a such json setting: ``` { page:1, items:[ { name: 'item1', id:1 }, { name: 'item1', id:2 }, { name: 'item1', id:3 } ] } ``` And a such modelling: ``` var Item = Backbone.Model.extend({ defaults: {name: "No name"} }); var ItemCollection = Backbone.Collection.extend({ model: Item, url: '/some/ajax/url', }); ``` After fetching this json, how can I map the items set as the collection of the ItemCollection and add the page number as an attribute to the collection?