2012-07-10 16 views
11

Cosa succede esattamente quando si salva un modello Backbone? Ecco il meglio che posso mettere insieme leggendo la documentazione here:Cosa succede esattamente quando si salva un modello Backbone?

  1. model.save([attributes], [options]) si chiama
  2. "cambiamento" evento
  3. A è sparato (ma solo se gli attributi sono nuovi)
  4. Il server viene notificata la modificare?
  5. Un evento "sync" viene chiamato una volta il server restituisce

Ma io sono un noob Backbone e sono sicuro che qualcun altro potrebbe fare un modo migliore lavoro di spiegare.

Sono in parte solo curioso di sapere cosa succede. Ho anche difficoltà a capire come Backbone viene fuori con l'oggetto JSON che invia al server. Sto avendo un separate problem dove l'oggetto JSON non è quello che voglio, ma non so come cambiarlo.

risposta

8

Il processo dettagliato può essere trovato nel annotated source code per Backbone.Model.save e Backbone.sync.

Se si ignora options.wait e options.silent, la scomposizione è in gran parte corretta.

Quando si invia un model.save:

  1. gli attributi passati alla funzione sono impostati, un evento di modifica viene generato se i valori modificati
  2. save delegati la richiesta al model.sync o Backbone.sync
  3. sync serializza i dati in una stringa JSON chiamando JSON.stringify(model.toJSON())
  4. Una richiesta Ajax viene inviata al server, una richiesta POST per un nuovo oggetto, una PUT per un aggiornamento. L'URL di destinazione è definito da model.url (o collection.url/id)
  5. Al termine della richiesta, il modello viene aggiornato con la risposta del server, se presente, e attiva di conseguenza un evento change.
  6. Chiamate di successo o di errore vengono chiamate, un evento sync viene attivato se non è definita alcuna richiamata di successo.

Di solito, è possibile personalizzare questo comportamento sovrascrivendo model.toJSON o model.sync

+2

Passaggio sei modificato in Backbone 0.9.9. Vedi http://backbonejs.org/#changelog Eventi di "sincronizzazione" e "errore" consolidati in Backbone.sync. Ora vengono attivati ​​indipendentemente dall'esistenza di callback di successo o errore. –

-1

prima, vi consiglio di leggere il codice sorgente della spina dorsale, è davvero molto simple.Default interazione backbone e server-side è ottenuta attraverso backbone.sync.

in secondo luogo, è possibile tracciare nuovamente il metodo del codice di debug model.save, naturalmente conoscere i dettagli. Ti suggerisco di iniziare qui: http://backbonejs.org/examples/todos/index.html

Problemi correlati