Мои 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 обновлял и restangularize объект res
автоматически, поэтому он имеет идентификатор, может быть put()
и т.д.
Теперь другой сценарий. Когда я устанавливаю объект Restangular:
var res = Restangular.one("resource", 15).get();
// returns {foo: "bar", id: 15}
res.put();
Сервер всегда отвечает текущим состоянием объекта, который может быть:
{"foo": "buzz", "id": 15}
... поэтому я хочу, чтобы Restangular автоматически обновлял res
после этого PUT.