2012-06-14 50 views

回答

4

我想這取決於你的使用場景,以及你想改變多少調用代碼。我認爲你有兩個選擇:

選項1:不改變客戶端(呼叫)代碼

奇怪的是註釋source for Backbone.sync給「配料」作爲一個可能的原因重寫sync方法:

使用setTimeout將快速更新批量處理爲單個請求。

實際上不保存同步,而是將請求添加到隊列中,並且每隔一段時間只進行一次批量保存。 _.throttle_.delay可能會幫助您。

選項2:更改客戶端代碼

或者,而不是調用您的模型save,你可以save方法添加某種到集合。你必須跟蹤哪些模型實際上被修改了,因此需要更新,因爲據我所知,Backbone只知道它們是否是新的(但我可能是錯的)。

+0

的如果我使用'_.throttle'或'每個Ajax請求_.delay',如何在單個Ajax請求中發送多個'更新'?模型陣列? – Henry

+1

有多種方式,實際上它取決於您的數據訪問模式。這裏有一個討論:http://stackoverflow.com/questions/411462/restful-way-to-create-multiple-items-in-one-request – stusmith

1

這裏是我是如何做到的

Backbone.originalSync = Backbone.sync; 

Backbone.sync = function (method, model, options) { 
    // 
    // code to extend sync 
    // 

    // calling original sync 
    Backbone.originalSync(method, model, options); 
} 

正常工作對我來說,我用它來控制出來的任何模型或集合