2013-10-27 150 views
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);行有點奇怪。爲什麼當我在模型本身調用方法時必須傳入模型?另外,我手動調用'創建'這顯然是錯誤的。不應該'同步'意識到應該創建還是更新?

而且,不應該'同步'智能足以在任何已從我的集合中刪除的模型上調用'刪除'?

我猜我應該看看在我的模型上自定義同步方法,但我仍然困惑於我在做什麼,這是不尋常的,這將需要我自定義這些同步方法。

我覺得我錯過了一個關於同步的重要觀點。

+1

骨幹考慮模型沒有id爲新的和調用創建(保存方法)否則調用更新(或補丁)。不,這不是Backbone.Collection的默認行爲,我想你誤解了Backbone的sync,fetch和save方法(然後閱讀文檔)。你的一些觀點不是主幹/客戶端,而是服務器端。 –

+0

aha。好吧,據我懷疑,我忽略了一些相當基本的東西,那就是保存方法。我直接跳過同步。所以從我所看到的,保存我認爲同步做的工作。同步是用於處理來自服務器的保存請求的響應,以確保該模型在保存後確實在服務器上包含屬性。那麼collection.sync有什麼意義?何時會被解僱? – xanld

+0

立即同步收集(如果您有/ blog /:id /標籤或類似的東西)。您的服務器必須支持嵌套關係。 –

回答

0

有關記錄,這個問題並沒有真正的答案,因爲這是一個無效的問題!我誤解了'同步'的用途。我現在使用KiT O指出的保存。

謝謝。