假设有两个集合,分别代表/api/page/1和/api/page/2;有没有办法(例如,通过下划线)将这两个集合合并成一个新的单一集合?
发布于 2012-09-12 17:36:57
选项1
如果还没有获取集合,可以获取第一个集合,然后使用{add : true}标志获取第二个集合,第二个集合将合并到第一个集合中:
collection.fetch({data : {page : 2});
=> [{id: 1, article : "..."}, {id: 2, article : "..."}];
collection.fetch({data : {page : 2}, add : true });
=> [{id: 1, article : "..."}, {id: 2, article : "..."}, {id: 3, article : "..."}];选项2
如果您已经获取了集合并将其存储在两个变量中,则只需将第二个集合的所有内容添加到第一个变量中:
collection1.add(collection2.toJSON());这个选项受到以下事实的影响:当第二个集合被添加到第一个集合时,第一个集合将触发"add“事件。如果这有副作用,例如由于此事件而重新呈现的不需要的UI,您可以通过添加{silent : true}标志来抑制它
collection1.add(collection2.toJSON(), {silent : true});选项3
如果您只需要这些集合的JSON格式,即用于HTML模板渲染目的,则可以将所有内容简化为JS字面值(数组、对象):
collection1.toJSON().concat(collection2.toJSON());
=> [{id: 1, article : "..."}, {id: 2, article : "..."}, ...];选项4=选项2+ 3
如果您已经获取了这两个集合,则可以简化为JS字面量,并将所有内容添加到新的主干集合中
var rawCollection = collection1.toJSON().concat(collection2.toJSON());
var newCollection = new Backbone.Collection(rawCollection);发布于 2012-09-15 14:20:37
试试这个,集合是模型的数组
collection1.add(collection2.models); 如果我们使用
collection1.add(collection2.toJSON());然后引用chage
发布于 2012-09-12 17:32:54
collection.add(models, [options]) 集合是模型的数组
collection.models返回模型数组
向集合中添加一个模型(或模型数组)。
A = Backbone.Collection;
collection1 = new A([
{key, 'value'}, //model1
{key : value1} //model2 in collection1
]);
B = Backbone.Collection;
collection2 = new B([
{key1, 'value'}, //model1
{key1 : value1} //model2 in collection2
]);
collection1.add(collection2.models); //now, collection1 has four models..https://stackoverflow.com/questions/12384088
复制相似问题