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.sync
con una alternativa de almacenamiento localbackbone-localStorage
Básicamente, Backbone.sync debería ser una función que tome 4 argumentos:
Necesitas disparar
options.success
ooptions.error
dependiendo de simethod
tuvo é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.sync
deben implementar. Puede implementar másmethods
y puede pasar más parámetros a,success
pero es mejor no hacerlo.Es mejor asegurarse de que haga lo mismo que
Backbone.sync
hace actualmente para que su programación a una interfaz en lugar de una implementación. Si desea cambiar su modificadoBackbone.sync
para 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.sync
es actaully,(this.sync || Backbone.sync)
así que solo tienes que hacer algo como:Backbone.sync
es solo el predeterminado global que usan todos los modelos a menos que los modelos tengan unsync
mé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í!sync
desde 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
sync
mé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