有沒有辦法輕鬆克隆骨幹集合?我想知道爲什麼沒有像模型一樣構建方法。我的問題是,我有一個模型拿着孩子的集合。當我克隆模型。我仍然收集孩子,但只有他們的默認值。如何克隆主幹集合
如何克隆主幹集合
回答
你想要克隆該集合的用例是什麼?
集合中沒有內置的克隆功能,因爲您不想克隆集合中的模型。克隆一個模型會導致同一個模型有兩個單獨的實例,如果你更新了一個模型,另一個將不會被更新。
如果您想基於特定條件創建新集合,那麼您可以使用該集合的過濾方法。
var freshmenModels = studentsCollection.filter(function(student) {
return student.get('Year') === 'Freshman';
}
var freshmenCollection = new Backbone.Collection(freshmenModels);
要繼續前進,克隆集合中的模型,你可以寫下面的代碼
var clonedCollection = new Backbone.Collection();
studentsCollection.each(function(studentModel) {
clonedCollection.add(new Backbone.Model(studentModel.toJSON()));
});
另一種選擇,如果你需要以下(這是我一直在尋找,當我發現這個問題;)):
- 集合的副本應該是相同類型與原始採集的(例如,你已經創建了一個擴展Backbone.Collection自己的集合型)
- 集合的副本應與相同的選項集合的副本原
- 的模型來創建應使用model.clone()方法創建
代碼:
var models = original.map(function (model) { return model.clone(); });
var options = _.clone(original.options);
var copy = new original.constructor(models, options);
Backbone.Collection上的泛型克隆方法會很棘手,因爲模型及其嵌套對象是否通過引用被複制或者自身被克隆總是存在細微之處。根據你的情況,需求會有很大的變化,所以你只需要寫出你需要的東西。
最簡單的方法:
var cloned = new Backbone.Collection(original.toJSON());
其中original
是克隆的集合。
總是可以擴展Backbone的Collection
以添加克隆支持w或w/o繼承支持。
這是一個很好的答案,因爲它會執行深度克隆,這意味着它也會克隆模型。如果您更喜歡淺色克隆,其中新集合將指向相同的模型實例,請使用下面的Craig Myles的答案。 – Dre 2015-09-10 23:21:35
模型具有方法時不適用 – OlehZiniak 2018-01-31 14:42:44
使用Backbone Collection clone()方法:
var clonedCollection = myCollection.clone();
它克隆集合的鏈接,因此myCollection中的更改將遵循clonedCollection中的更改 – 2015-02-24 14:14:37
- 1. 如何使用主幹渲染集合?
- 2. 如何克隆從骨幹收集模式到另一個
- 3. jqueryui.sortable和主幹集合
- 4. 克隆包括實型的集合
- 5. 數據集克隆
- 6. Team Foundation Server:將集合的項目克隆到新集合中
- 7. 如何使用http來克隆克隆?
- 8. Morphia。如何克隆不同集合的查詢(種類)
- 9. git克隆到主目錄
- 10. 在主幹集合上調用調用
- 11. 主幹集合,REST和裸陣列
- 12. 多態模型的主幹集合
- 13. 自定義排序主幹集合
- 14. 主幹集合和把手每個
- 15. 如何克隆InputStream?
- 16. 如何克隆RectangleF
- 17. 如何克隆()StringBuilder
- 18. 如何克隆CharArrayWriter?
- 19. 如何將主幹集合分類爲多個集合進行呈現?
- 20. 如何確保克隆子模塊,如果不克隆,請克隆它?
- 21. 在克隆git-svn中的主幹之後克隆分支的最佳方法是什麼?
- 22. 克隆主存儲庫時未克隆子模塊
- 23. 如何克隆Subversion中的分支樹幹?
- 24. 如何將多個模型/集合添加到主幹視圖?
- 25. 如何停止在主幹中獲取集合
- 26. 如何在主幹關係中獲取嵌套集合
- 27. jQuery克隆問題(克隆表單輸入集)
- 28. HG:克隆沒有任何變更集
- 29. 克隆或不克隆
- 30. 副本集永遠不會完成克隆主節點
但我想複製所有單一車型的收藏。 – 2011-12-21 22:30:33
你想要做什麼,你需要複製/克隆集合中的所有模型? – Paul 2011-12-22 00:20:44
我有一堆產品,可以有一個子產品列表。所以當有些人把他們放在籃子裏時,我必須複製所有的副產品。用戶可以更改產品本身和子產品的數量。所以我需要一份原件在籃子裏。 – 2011-12-22 08:07:38