1
我想弄清楚如何保持模型集合與我的服務器同步。此刻,我的代碼看起來是這樣,但它顯然有幾個問題...骨幹收集同步
var myCollection = Backbone.Collection.extend({
url: '/api/block',
...
sync: function() {
_.each(this.models, function(model) {
model.sync('create', model);
});
}
});
此刻,當我打電話同步在我的收藏,它通過所有型號的迭代,並調用同步在他們每個人。我很驚訝,首先,這不是Backbone.Collection.sync方法的默認行爲。或者我誤解了'同步收集'應該做什麼?
其次,我的model.sync('create', model);
行有點奇怪。爲什麼當我在模型本身調用方法時必須傳入模型?另外,我手動調用'創建'這顯然是錯誤的。不應該'同步'意識到應該創建還是更新?
而且,不應該'同步'智能足以在任何已從我的集合中刪除的模型上調用'刪除'?
我猜我應該看看在我的模型上自定義同步方法,但我仍然困惑於我在做什麼,這是不尋常的,這將需要我自定義這些同步方法。
我覺得我錯過了一個關於同步的重要觀點。
骨幹考慮模型沒有id爲新的和調用創建(保存方法)否則調用更新(或補丁)。不,這不是Backbone.Collection的默認行爲,我想你誤解了Backbone的sync,fetch和save方法(然後閱讀文檔)。你的一些觀點不是主幹/客戶端,而是服務器端。 –
aha。好吧,據我懷疑,我忽略了一些相當基本的東西,那就是保存方法。我直接跳過同步。所以從我所看到的,保存我認爲同步做的工作。同步是用於處理來自服務器的保存請求的響應,以確保該模型在保存後確實在服務器上包含屬性。那麼collection.sync有什麼意義?何時會被解僱? – xanld
立即同步收集(如果您有/ blog /:id /標籤或類似的東西)。您的服務器必須支持嵌套關係。 –