2012-07-10 23 views
11

Co dokładnie dzieje się podczas zapisywania modelu kręgosłupa? Oto najlepszy mogę poskładać czytając dokumentację here:Co dokładnie dzieje się po zapisaniu modelu kręgosłupa?

  1. model.save([attributes], [options]) nazywa
  2. „zmiana” wydarzenie
  3. A jest zwolniony (ale tylko jeśli atrybuty są nowe)
  4. Serwer jest informowany o zmiana?
  5. A „sync” zdarzenie jest wywoływana raz serwer zwraca

Ale jestem noob Backbone i jestem pewien, że ktoś inny mógłby zrobić sposób lepiej wyjaśnić.

Po części jestem ciekawa, co się stanie. Mam również problem ze zrozumieniem, jak Backbone tworzy obiekt JSON, który wysyła do serwera. Mam separate problem, gdzie obiekt JSON nie jest tym, co chcę, ale nie wiem jak to zmienić.

Odpowiedz

8

Szczegółowy proces można znaleźć w annotated source code dla Backbone.Model.save i Backbone.sync.

Jeśli zignorujesz options.wait i options.silent, twoja dekompozycja jest w większości poprawna.

Po wydaniu model.save:

  1. atrybuty przekazywane do funkcji są ustawione, wydarzenie zmiana jest zwolniony, jeśli wartości zmieniło
  2. save delegatów wniosek do model.sync lub Backbone.sync
  3. sync serializes danych do ciągu JSON przez wywołanie JSON.stringify(model.toJSON())
  4. Żądanie Ajax jest wysyłane do wysłanego na serwer, żądanie POST dla nowego obiektu, a PUT dla aktualizacji. Docelowy adres URL jest zdefiniowany przez model.url (lub collection.url/id)
  5. Po zakończeniu żądania model jest aktualizowany z odpowiedzią serwera, jeśli istnieje, i odpowiednio uruchamia zdarzenie change.
  6. Wywoływane są wywołania zwrotne dotyczące powodzenia lub błędu; Zdarzenie sync jest wyzwalane, jeśli nie zdefiniowano żadnego połączenia zwrotnego pomyślnego.

Zazwyczaj można dostosować to zachowanie nadrzędnymi model.toJSON lub model.sync

+2

Krok szósty zmieniony w Szkielet 0.9.9. Zobacz http://backbonejs.org/#changelog Skonsolidowane zdarzenia "synchronizacji" i "błędu" w Backbone.sync. Są one teraz uruchamiane bez względu na powodzenie lub błąd wywołania zwrotnego. –

-1

pierwsze, proponuję odczytać kodu źródłowego szkieletu, jest naprawdę bardzo simple.Default kręgosłup i po stronie serwera interakcja odbywa się poprzez backbone.sync.

Po drugie, możesz ponownie prześledzić metodę debugowania modelu mode.save, oczywiście znając szczegóły. Proponuję zacząć tutaj: http://backbonejs.org/examples/todos/index.html

Powiązane problemy