2012-07-10 13 views
11

¿Qué sucede exactamente cuando guarda un modelo de red troncal? Aquí es lo mejor que puedo reconstruir mediante la lectura de la documentación here:¿Qué sucede exactamente cuando guardas un modelo Backbone?

  1. model.save([attributes], [options]) se llama
  2. caso
  3. Un "cambio" se dispara (pero sólo si los atributos son nuevos)
  4. El servidor es notificado de la ¿cambio?
  5. Un evento de "sincronización" se llama una vez que el servidor devuelve

Pero yo soy un novato Backbone y estoy seguro de que alguien más podría hacerlo de una manera mejor trabajo de explicar.

Estoy en parte solo por curiosidad. También estoy teniendo problemas para entender cómo Backbone genera el objeto JSON que envía al servidor. Tengo un separate problem donde el objeto JSON no es lo que quiero que sea, pero no sé cómo cambiarlo.

Respuesta

8

El proceso detallado se puede encontrar en annotated source code para Backbone.Model.save y Backbone.sync.

Si ignora options.wait y options.silent, su descomposición es en su mayoría correcta.

Cuando se emite un model.save:

  1. los atributos pasados ​​a la función está ajustada, un evento de cambio se dispara si los valores cambiados
  2. save delegados, el dispositivo para model.sync o Backbone.sync
  3. sync Serializa los datos a una cadena JSON llamando al JSON.stringify(model.toJSON())
  4. Se envía una solicitud AJAX al servidor, una solicitud POST para un nuevo objeto, un PUT para una actualización. La URL de destino está definida por model.url (o collection.url/id)
  5. Cuando finaliza la solicitud, el modelo se actualiza con la respuesta del servidor, si corresponde, y desencadena un evento change en consecuencia.
  6. Se llaman devoluciones de llamada correctas o de error, se desencadena un evento sync si no se define una devolución de llamada correcta.

Por lo general, puede personalizar este comportamiento reemplazando model.toJSON o model.sync

+2

El paso seis cambió en Backbone 0.9.9. Ver http://backbonejs.org/#changelog Eventos consolidados de "sincronización" y "error" dentro de Backbone.sync. Ahora se desencadenan independientemente de la existencia de éxito o de devoluciones de errores. –

-1

en primer lugar, le sugiero que lea el código fuente de la columna vertebral, es realmente muy simple.Default interacción columna vertebral y del lado del servidor se logra a través backbone.sync.

segundo, Usted puede rastrear el método de código de debug model.save otra vez, naturalmente conocer los detalles. Sugiero que empieces aquí: http://backbonejs.org/examples/todos/index.html

Cuestiones relacionadas