I have an array defined as:
this.noOfHouseHold = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20"];
I'm trying to convert it to a Backbone Collection as:
var adultListCollection = new Backbone.Collection(this.noOfHouseHold);
It gives me the list but for 2 digit numbers, it shows something like this:
attributes: Object
0: "1"
1: "1"
I'm not able to understand as to what is wrong here or is it the wrong way I'm converting my array to collections. Please suggest. Thanks in advance!
A Backbone collection expects a list of models/hashes of attributes that can be converted to a model but you have a plain array.
You will have to transform your array to a list of hashes. Assuming your values are the id
s of your models :
var lst = _.map(this.noOfHouseHold, function(val) {
return {id: val};
});
var adultListCollection = new Backbone.Collection(lst);
Backbone.Collection
expects a list of models or objects (because they can be converted to Backbone.Model
). In order to persist the array you have to convert those primitives into objects. Use Backbone.Collection.parse
and _.map
to turn your array of primitives into an array of objects:
var AdultListCollection = Backbone.Collection.extend({
parse: function (noOfHouseHold) {
var res = _.map(noOfHouseHold, function (n) {
return {id: n};
});
return res;
}
});
Now you can instantiate your Collection with an array:
var adultListCollection = new AdultListCollection(this.noOfHouseHold, {parse: true});
Example: JSFiddle