Backbone - parse object into models
Backbone - parse object into models
HTML
<script src="http://underscorejs.org/underscore-min.js"></script>
<script src="http://backbonejs.org/backbone-min.js"></script>
JavaScript
var obj = [{
"topicSummaryType": "MODULE",
"details": {
"10712": {
"topicSummaryName": "15f Brand (all)",
"topicSummaryId": 10712,
"prop1": undefined,
"commentCount": 8,
"archivedCommentCount": 4,
"topicIds": {
"GAME_QUESTION": [139014, 139018],
"TRAINING_PAGE": [38494],
"GAME_END": [10712],
"GAME_START": [10712]
}
},
"10720": {
"topicSummaryName": "15f Mountain Athletics™ (core)",
"topicSummaryId": 10720,
"commentCount": 7,
"archivedCommentCount": 7,
"topicIds": {
"TRAINING_PAGE": [38595]
}
}
},
"commentCount": 0,
"archivedCommentCount": 0
}];
var innerModel = Backbone.Model.extend({
parse: function(response){
var attr ={};
attr.key = response.key;
attr.ids = [];
for(var i=0; i<response.ids.length; i++){
attr.ids.push({idx:i, value: response.ids[i]});
}
response.ids;
console.log(attr.key);
console.log(attr.ids);
return attr;
}
});
var innerColl = Backbone.Collection.extend({
model: innerModel,
parse: function(response){
console.log("topicIds");
return _.map(response, function(value, key) {
return {key:key, ids: response[key]};
});
}
});
var MyModel = Backbone.Model.extend({
parse: function(response){
var attr ={};
attr.key = response.key
attr.topicSummaryName = response.model.topicSummaryName;
attr.archivedCommentCount = response.model.archivedCommentCount;
attr.topicIds = new innerColl(response.model.topicIds, {parse:true});
console.log(response.model.archivedCommentCount);
return attr;
}
});
var MyCollection = Backbone.Collection.extend({
model: MyModel,
parse: function(response) {
console.log('response', response);
var responseObj = response[0]['details'];
return _.map(responseObj, function(value, key) {
return {key:response[0].topicSummaryType, model:responseObj[key]};
});
}
});
var myCollection = new...