2012-06-14 19 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); 
} 

正常工作对我来说,我用它来控制出来的任何模型或集合