2012-08-03 46 views

回答

3

實際上,這兩個sync()方法只是代理來共同Backbone.sync()方法:

集合總是在Model.sync()超過其單個個體經營委託型號如:createremove等等。但Collection在fetch()操作中使用自己的sync(),因爲它與fetch模型或集合非常不同,例如:URL跟隨另一個模式,後端層應該有不同的響應。

另一方面,我看到Backbone.sync()作爲一種私人方法,我試圖不直接使用它,如果我這樣做,我感覺不舒服。我認爲sync()方法是處理點,讓您可以覆蓋完全後端同步,您可以覆蓋實現不同持久化層,例如使用的localStorage的方法。但不能直接調用。

由於@JMM在評論中所說,Model.sync()Collection.sync()也是一個不錯的點要改寫,使其「做一些事情的自定義,然後調用Backbone.sync()進行一切如常」

+0

你可以實現一個'sync()'方法來做一些自定義的事情,然後調用'Backbone.sync()'像往常一樣繼續。您不必完全替換內置實現,或者只定義一個「sync()」方法來更改持久性策略。 – JMM 2012-08-03 11:28:37

+0

@JMM你是對的,更新我的答案包括這一點。 – fguillen 2012-08-03 12:13:00

2

骨幹沒有在默認模式和集合一個sync - 方法,但是這兩種模式,並集合有使用Backbone.sync - 方法,使方法(fetch兩個模型和集合,並savedestroy的機型) Ajax的電話。 Docsannotated source

使用Backbone.sync檢查用於個體收集或模型sync方法的存在的方法,這樣的同步的默認功能可以通過覆蓋Backbone.sync或特定部分由延伸的模型被覆蓋一切或需要與sync功能自定義同步的集合。

至於爲什麼這兩種模式和集合與服務器同步的能力:靈活性。如果只有集合具有同步功能,那麼您不能擁有單獨的模型,並且如果只有模型具有同步功能,您將如何從服務器初始獲取大批模型。有模型和集合的同步功能沒有缺點,所以爲什麼不呢?

我對你的反問:如何在只有其他同步的情況下進行同步?

+0

你說得對。骨幹有同步方法,而不是模型和集合。 Twas我的實際問題,但不能正確地問它。對不起。現在我已經意識到爲什麼我們需要同時處理雙方的問題,並沒有回答你的反問題。我認爲每次模型更改時都不能同步收集,但這並不好。 – anit 2012-08-03 11:10:26