Как использовать частичное обновление Backbone.js (patch: true)?
В методе сохранения главы Model документация Backbone.js гласит:
Если вместо этого вы хотите, чтобы измененные атрибуты отправлялись на сервер, вызовите model.save(attrs, {patch: true}). Вы получите запрос HTTP PATCH на сервер только с переданными атрибутами.
Источник: http://backbonejs.org/
Я не мог найти хорошее объяснение того, как это на самом деле работает (и если это действительно работает!). Он должен отправить запрос PATCH на сервер только с переданными атрибутами, но он всегда отправляет запрос POST на сервер ВСЕ атрибуты модели. А с Firebug я не вижу никакой разницы при смене Backbone.emulateHTTP
: Firebug всегда показывает POST-запросы с помощью метода save.
Я создал тест здесь: http://jsfiddle.net/r9kXL/ Обратите внимание, что URL, конечно, не существует, но важно увидеть запрос POST в Firebug. Как видите, если вы попытаетесь отправить только один атрибут, он всегда будет отправлять все на сервер, что делает эту опцию абсолютно бесполезной.
Почему разработчики Backbone предлагают такие опции и для чего они нужны? Не могли бы вы показать пример его использования?
1 ответ
Это происходит потому, что ваша модель isNew
и Backbone "создает новый экземпляр" (метод create
) вместо исправления существующего (метод patch
). Посмотрите - http://jsfiddle.net/r9kXL/1/
'create': 'POST',
'update': 'PUT',
'patch': 'PATCH',
'delete': 'DELETE',
'read': 'GET'