Мои POST и PUT возвращают текущее состояние объекта, видимое на сервере. Как я могу сказать Restangular обновлять свой объект модели после вызова сервера?
На всякий случай - зачем? Потому что во время сохранения / обновления сервер мог вычислить некоторые поля. Потому что, возможно, были одновременные обновления другими клиентами, и я хочу убедиться, что клиент, который в настоящее время обновляется, обновлен.
Пока я нашел только это:
var res = {foo: "bar"};
var cb = function(response) {
$.extend(res, response);
}
// POST / create
Restangular.all("resource").post(res).then(cb);
// PUT / update
res.put().then(cb);
Это кажется настолько грязным и распространенным одновременно, что я подозреваю, что должен быть способ получше.
ИЗМЕНИТЬ
Приведенный выше код демонстрирует только два различных действия. Моя цель - не отправлять обновление на сервер после создания объекта, а обновить состояние на клиенте. Если хотите, синхронизируйте состояние с сервером.
Когда я размещаю объект:
var res = {foo: "bar"};
Restangular.all("resource").post(res);
В теле ответа сервера написано:
{"foo": "bar", "id": 15}
... тогда я хотел бы, чтобы Restangular обновляла и изменяла прямоугольную форму объекта res
автоматически, чтобы у него был идентификатор, может быть put()
и т. д.
Теперь другой / дополнительный сценарий. Когда я помещаю прямоугольный объект:
var res = Restangular.one("resource", 15).get();
// returns {foo: "bar", id: 15}
res.put();
Сервер всегда отвечает текущим состоянием объекта, которое может быть:
{"foo": "buzz", "id": 15}
... поэтому я хотел бы, чтобы Restangular обновляла res
автоматически после этого PUT.