Что именно происходит при сохранении модели Backbone?
Что именно происходит при сохранении модели Backbone? Здесь лучшее, что я могу объединить, прочитав документацию здесь:
-
model.save([attributes], [options])
называется
- Событие "change" запускается (но только если атрибуты новы)
- Сервер уведомляется об изменении?
- Событие "sync" вызывается, как только сервер возвращает
Но я являюсь Backbone noob, и я уверен, что кто-то другой сможет лучше объяснить ситуацию.
Мне отчасти интересно, что происходит. У меня также возникли проблемы с пониманием того, как Backbone создает объект JSON, который он отправляет на сервер. У меня есть отдельная проблема, где объект JSON не тот, кем я его хочу, но я не знаю, как его изменить.
Ответы
Ответ 1
Подробный процесс можно найти в аннотированный исходный код для Backbone.Model.save и Backbone.sync.
Если вы игнорируете options.wait
и options.silent
, ваша декомпозиция в основном правильная.
При выпуске model.save
:
- атрибуты, переданные функции, устанавливаются, событие изменения запускается, если значения изменены
-
save
делегирует запрос model.sync
или Backbone.sync
-
sync
сериализует данные в строку JSON, вызывая JSON.stringify(model.toJSON())
- Запрос Ajax отправляется на сервер, запрос POST для нового объекта, PUT для обновления. Целевой URL-адрес определяется
model.url
(или collection.url/id
)
- Когда запрос завершается, модель обновляется с ответом сервера, если таковой имеется, и запускает событие
change
соответственно.
- Вызываются успешные или обратные вызовы ошибок, событие
sync
запускается, если не определена успешная обратная связь.
Обычно вы можете настроить это поведение, переопределяя model.toJSON
или model.sync
Ответ 2
во-первых, я предлагаю вам прочитать исходный код магистрали, на самом деле очень просто. Поддержка магистральной и серверной сторон достигается с помощью backbone.sync.
second, Вы можете снова проследить debug model.save метод кода, естественно узнать подробности.
Я предлагаю вам начать здесь:
http://backbonejs.org/examples/todos/index.html