我有一个骨干系列:
var user = new Backbone.Collection.extend({
url: '/user',
parse: function (response) {
return response.lunch;
return response.dinner;
}
});
返回一个像这样的json:
[
{
lunch: [{
appetizer : 'bagel',
maincourse: 'steak',
desert: 'sweets'
}]
},
{
dinner: [{
appetizer : 'chips',
main: 'rice',
desert: 'sweets'
}]
}
]
我想结合response.lunch和response.dinner并有一个共同的集合:我试过:
parse: function (response) {
var collection1 = response.lunch;
var collection2 = response.dinner;
return collection1.add(collection2.toJSON(), {silent : true});
}
但它不起作用。另外我如何使用maincourse覆盖所有主要功能?我试过了:
this.collection.each(function(model) {
var a = model.get("main");
model.set({a: "maincourse"});
}
任何帮助将不胜感激。谢谢!
答案 0 :(得分:1)
我猜你要合并lunch
和dinner
,这样你的收藏就会以{ appetizer : 'bagel', ... }
和{ appetizer : 'chips', ... }
结尾。如果是这样,那么只需将concat
两个数组放在一起:
parse: function(response) {
return response.lunch.concat(response.dinner);
}
如果您要将所有main
属性重命名为maincourse
,那么您需要使用get
来提取main
,unset
删除它们,然后set
将它们放回新名称:
var maincourse = model.get('main');
model.unset('main', { silent: true });
model.set('maincourse', maincourse, { silent: true });
或直接编辑attributes
:
model.attributes.maincourse = model.attributes.main;
delete model.attributes.main;
或更好,只需在parse
方法中重命名该属性。