2014-01-16 67 views
0

我有一个骨干集合:覆盖的解析函数

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"}); 
    } 

任何帮助,将不胜感激。谢谢!

回答

1

我猜你想要合并lunchdinner,这样你的收藏就会以其中的{ appetizer : 'bagel', ... }{ appetizer : 'chips', ... }结尾。如果是这样,那么只需concat两个数组在一起:

parse: function(response) { 
    return response.lunch.concat(response.dinner); 
} 

如果要重命名的所有main属性maincourse那么你想使用get拉出main S,unset删除它们,并然后set把它们放回用新的名称:

var maincourse = model.get('main'); 
model.unset('main', { silent: true }); 
model.set('maincourse', maincourse, { silent: true }); 

,或直接编辑0​​:

model.attributes.maincourse = model.attributes.main; 
delete model.attributes.main; 

或更好,只需在parse方法中重命名属性即可。

+0

谢谢我结束了使用concat。干杯! – WhatisSober