反正只在集合中使用同步方法或只在模型中就足夠了,那爲什麼他們必須在兩個地方同步呢?骨幹爲什麼在模型和集合中都有同步方法?
回答
實際上,這兩個sync()
方法只是代理來共同Backbone.sync()
方法:
集合總是在Model.sync()
超過其單個個體經營委託型號如:create
,remove
等等。但Collection在fetch()
操作中使用自己的sync()
,因爲它與fetch
模型或集合非常不同,例如:URL跟隨另一個模式,後端層應該有不同的響應。
另一方面,我看到Backbone.sync()
作爲一種私人方法,我試圖不直接使用它,如果我這樣做,我感覺不舒服。我認爲sync()
方法是處理點,讓您可以覆蓋完全後端同步,您可以覆蓋實現不同持久化層,例如使用的localStorage的方法。但不能直接調用。
由於@JMM在評論中所說,Model.sync()
和Collection.sync()
也是一個不錯的點要改寫,使其「做一些事情的自定義,然後調用Backbone.sync()
進行一切如常」。
骨幹沒有在默認模式和集合一個sync
- 方法,但是這兩種模式,並集合有使用Backbone.sync
- 方法,使方法(fetch
兩個模型和集合,並save
,destroy
的機型) Ajax的電話。 Docs,annotated source
使用Backbone.sync
檢查用於個體收集或模型sync
方法的存在的方法,這樣的同步的默認功能可以通過覆蓋Backbone.sync
或特定部分由延伸的模型被覆蓋一切或需要與sync
功能自定義同步的集合。
至於爲什麼這兩種模式和集合與服務器同步的能力:靈活性。如果只有集合具有同步功能,那麼您不能擁有單獨的模型,並且如果只有模型具有同步功能,您將如何從服務器初始獲取大批模型。有模型和集合的同步功能沒有缺點,所以爲什麼不呢?
我對你的反問:如何在只有其他同步的情況下進行同步?
你說得對。骨幹有同步方法,而不是模型和集合。 Twas我的實際問題,但不能正確地問它。對不起。現在我已經意識到爲什麼我們需要同時處理雙方的問題,並沒有回答你的反問題。我認爲每次模型更改時都不能同步收集,但這並不好。 – anit 2012-08-03 11:10:26
- 1. 骨幹爲什麼在集合中使用模型
- 2. 爲什麼在骨幹集合中指定模型
- 3. 骨幹同步沒有更新集合
- 4. 在骨幹集合中訪問模型
- 5. 區分骨幹模型和集合
- 6. 骨幹localStorage的模型和集合
- 7. 在一個步驟中銷燬集合中的骨幹模型?
- 8. 保持不同骨幹模型同步的方法
- 9. 模型骨幹集合中消失
- 10. 集模型 - 骨幹
- 11. 骨幹收集同步
- 12. 骨幹中的覆蓋同步方法
- 13. 骨幹模型同步狀態
- 14. 將模型連接到骨幹js集合的最佳方法
- 15. 骨幹集合提取單個模型
- 16. 骨幹集合總是與n模型
- 17. 骨幹聽嵌套模型/集合?
- 18. 骨幹集合模型不可訪問
- 19. 將模型添加到骨幹集合
- 20. 骨幹集合了空模型獲取
- 21. 骨幹模型收集
- 22. 流星和骨幹同步
- 23. 骨幹集合視圖中添加不被稱爲與模型
- 24. 模型和集合到骨幹中的一個視圖
- 25. 獲取骨幹集合中的所有模型
- 26. 查找模型,可是沒有骨幹集合中的屬性
- 27. 什麼是最好的方式來保存在骨幹集合?
- 28. 骨幹和parse.com模型和集合之間的連接
- 29. 如何在骨幹中顯示模型集合中的視圖
- 30. 在嵌套集合中設置模型中的骨幹屬性
你可以實現一個'sync()'方法來做一些自定義的事情,然後調用'Backbone.sync()'像往常一樣繼續。您不必完全替換內置實現,或者只定義一個「sync()」方法來更改持久性策略。 – JMM 2012-08-03 11:28:37
@JMM你是對的,更新我的答案包括這一點。 – fguillen 2012-08-03 12:13:00