2012-06-14 13 views

Respuesta

4

Supongo que depende de los escenarios de uso y de la cantidad que desee cambiar el código de llamada. Creo que tienes dos opciones:

Opción 1: Ningún cambio en el cliente (llamar) código de

Curiosamente la source for Backbone.sync anotada da 'dosificación' como una posible razón para anular el sync método:

Use setTimeout para realizar actualizaciones rápidas en lotes en una única solicitud.

En lugar de guardar la sincronización, agregue la solicitud a una cola y solo batch-save cada cierto tiempo. _.throttle o _.delay podría ayudarlo aquí.

Opción 2: Cambiar el código de cliente

Como alternativa, en lugar de llamar save en sus modelos, se podría añadir algún tipo de método para save colecciones. Tendría que rastrear qué modelos fueron realmente modificados y, por lo tanto, necesitan actualización, ya que, por lo que puedo decir, Backbone solo sabe si son nuevos o no (pero podría estar equivocado al respecto).

+0

Si utilizo '' _.throttle' o _.delay', ¿cómo envío múltiples 'actualizaciones' en una sola solicitud ajax? matriz de modelos? – Henry

+1

Hay varias formas, y realmente depende de sus patrones de acceso a los datos. Hay una discusión aquí: http://stackoverflow.com/questions/411462/restful-way-to-create-multiple-items-in-one-request – stusmith

1

Así es como lo hice

Backbone.originalSync = Backbone.sync; 

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

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

funciona bien para mí, y lo uso para controlar cada petición Ajax que sale de cualquier modelo o colección

Cuestiones relacionadas