Estoy probando Backbone.js, y una de las cosas que estoy intentando es hacer una llamada a una API remota, por lo que necesito poder anular Backbone.sync, ya que entiendo la documentación .
No hay un ejemplo de cómo hacerlo en la documentación misma, y no parece haber un grupo de Google para Backbone ... ¿alguien puede señalar un ejemplo para hacer esto?
                    
                        javascript
                                backbone.js
                                
                    
                    
                        picardo
fuente
                
                fuente

Respuestas:
Eche un vistazo a este ejemplo de fuente anotada donde se sobrescribe
Backbone.synccon una alternativa de almacenamiento localbackbone-localStorage
Básicamente, Backbone.sync debería ser una función que tome 4 argumentos:
Necesitas disparar
options.successooptions.errordependiendo de simethodtuvo éxito. Los métodos están en el formato:"create": esperaba que creara el modelo en el servidor"read": esperaba que leyeras este modelo desde el servidor y lo devolvieras"update": esperaba que actualizara el modelo en el servidor con el argumento"delete": espera que elimine el modelo del servidor.Necesita implementar esos 4 métodos y definir lo que quiera para su
"server"Por supuesto, estas son solo las cosas que
Backbone.syncdeben implementar. Puede implementar másmethodsy puede pasar más parámetros a,successpero es mejor no hacerlo.Es mejor asegurarse de que haga lo mismo que
Backbone.synchace actualmente para que su programación a una interfaz en lugar de una implementación. Si desea cambiar su modificadoBackbone.syncpara decir el localStorage, no tendrá que extenderlo usted mismo para que coincida con su Backbone.sync extendido "[Editar]
También tenga en cuenta que puede usar múltiples implementaciones de
sync. Cada referencia aBackbone.synces actaully,(this.sync || Backbone.sync)así que solo tienes que hacer algo como:Backbone.synces solo el predeterminado global que usan todos los modelos a menos que los modelos tengan unsyncmétodo establecido específicamente.fuente
(this.sync || Backbone.sync)Ver editar. Un consejo adicional es leer la fuente anotada de columna vertebral. ¡Todo está ahí!syncdesde cualquier parte de su código (generalmente un overryddensync), simplemente haga unBackbone.sync.call(this, method, this, options).Sé que esta respuesta es demasiado tarde, y la respuesta de @Raynos es excelente, pero lo hice de manera un poco diferente, y tal vez sería útil para usted o para cualquier otra persona que intente usar una API con Backbone.
En lugar de anular Backbone.sync, anulé Backbone.ajax , porque es donde se realiza la solicitud ajax.
Aquí hay un ejemplo:
fuente
Normalmente necesito anular el
syncmétodo de red troncal cuando solo necesito sincronizar ciertos atributos. Una implementación típica se ve así:fuente
Backbone.sync.apply(this, arguments);? Es un poco más flexible si, por ejemplo, decide omitir el argumento "opciones" en la versión anulada desync.Backbone.model.save(attributes, {patch: true})para hacer actualizaciones parciales ahora