Как использовать частичное обновление 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'
Другие вопросы по тегам