假設有2個集合,分別代表/api/page/1
和/api/page/2
;無論如何(例如通過Underscore)將這2個集合合併爲一個新的單一集合?骨幹 - 合併2個收藏集?
回答
選項1
如果您還沒有獲取收集的是,你可以獲取第一個,然後取第二個與{補充:真}標誌,第二個會被合併到第一個:
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
如果you'v Ë已經獲取的收藏,讓他們存儲在兩個變量,你可以添加第二個集合中的所有內容複製到第一個:
collection1.add(collection2.toJSON());
此選項遭受的事實,第一個集合將火「添加「事件時,第二個集合添加到它。如果有副作用,如不希望的UI重新呈現由於此事件,您可以通過添加{沉默:真正}壓制它標誌
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);
在我看來,通過這樣做,你失去了與/api/page/{1, 2}/
綁定的語義。
在我看來,既不是骨幹,也不是下劃線,它提供了一個功能/方法來完成你想要做的事情。
所以你的選擇:
- 創建一個新的集合,從以前的集合添加每個項目;
- 第一收集項添加到第二個
但你可能已經知道這一點。
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..
Collection.models提供moels和Collection.add的陣列直接訪問將採取的模式數組作爲參數。
使用
collection.models
insted的的
collection.toJSON()
試試這個, 收集的模型
collection1.add(collection2.models);
如果我們使用數組
collection1.add(collection2.toJSON());
然後參考chage
+1這是唯一真正的答案,應該是真正的答案。請參閱文檔:http://backbonejs.org/#Collection-add。您也可以通過傳遞以下內容來決定是否接受重複項:{merge:true} –
- 1. 骨幹收集抓取並請求
- 2. 骨幹集合 - 集合級別的Union 2集合
- 3. 中的骨幹收集
- 4. 垃圾收集骨幹
- 5. 骨幹模型收集
- 6. Backbone.js的骨幹與收集
- 7. 骨幹允許收集
- 8. 骨幹JS集合解析
- 9. 骨幹:預取集合
- 10. 骨幹定義集合
- 11. 骨幹共享集合
- 12. 骨幹篩選集合
- 13. 迭代骨幹集合
- 14. 定義一個新的骨幹集合
- 15. 比較骨幹中的兩個集合
- 16. 骨幹JS模型響應陣列骨幹收集
- 17. 骨幹JS:自填入收藏
- 18. Javascript骨幹;模型與收藏不同?
- 19. 骨幹+ RequireJS:讓收藏持久?
- 20. 骨幹:從收集得到的模型
- 21. 訪問嵌套的骨幹收集
- 22. 骨幹收集從URL的JSON
- 23. 谷歌喜歡骨幹收集搜索
- 24. 收集骨幹覆蓋網址創建
- 25. 骨幹虛擬:瞭解收集同步
- 26. 骨幹收集數據谷歌地圖
- 27. 骨幹 - 從JSON收集不填充
- 28. 取骨幹收集問題id爲
- 29. fetch收集使用其餘api骨幹
- 30. 骨幹視圖:等到收集提取
感謝您的詳細解釋=) – Kay
-1。如果你打電話給JSON(),你會失去對模型的引用。如果您創建模型,請將其插入到集合中,將集合與另一個合併,更改模型,最後一個集合中的模型不會更新。這將成爲調試的噩夢。如果你想複製這些模型並保持它們分開,那就沒問題,但這不是標準,應該指出。 –
如果你已經有了這兩個集合,你可能應該使用下面的任何一個答案:'collection1.add(collection2.models);' –