我有两个主干集合类别和项目,类别包含具有id,名称和项目的类别模型(w / c包含以逗号分隔的字符串格式的项目ID)和包含项目模型的项目集合(id,name等) )。
如何将它们合并到一个可以在手柄模板中轻松渲染的对象
示例结构:
var Categories = [{'id':'1', 'category_name':'Burgers', 'category_items':'1,2'},{'id':'2','category_name':'Drinks','category_items':'3'}];
var Items = [{'id':'1','item_name':'Burger 1'},{'id':'1','item_name':'Burger 2'},{'id':'1','item_name':'Chicken; 1'}];
示例输出:
var output = [{'id':'1', 'category_name':'Burgers', 'items':[{'id':'1','item_name':'Burger1', ...},{'id':'1','item_name':'Burger2', ...} ]}, {'id':'2', 'category_name':'Chicken', 'items':[{'id':'3','item_name':'Chicken1', ...} ]
是的,我已经尝试了,但我似乎无法管理它
答案 0 :(得分:1)
我编写了一个名为“mergeObjectWithId”的函数。它合并来自两个集合的数据遵循以下步骤:
尝试此功能:
function mergeObjectWithId(id){
//assume categories is your Category collection instance
var obj = categories.findWhere({id:id}).clone();
//assume items is your Item collection instance
obj.items = items.find({id:id}).slice(0);
return obj;
}
var output = mergeObjectWithId(1);
希望这对你有所帮助。
答案 1 :(得分:1)
依靠Underscore的有用功能:
var json = _.map(c.toJSON(), function(c) {
return _.extend(c, {
category_items: _.map(c.category_items.split(','), function(id) {
return i.get(id).toJSON();
})
});
});
第一个_.map
加上_.extend
仅用于替换category_items
。我发现它非常侮辱,但不记得是否有任何方法可以一次性完成。