Запретить $resource.$ Save() от изменения данных ресурса AngularJS

В приведенном ниже примере я выполняю некоторые преобразования с помощью извлеченного ресурса из API.

var resource = $resource('http://example.com/resource/:id');

$scope.record = resource.get({id: 123});

$scope.record.$promise.then(function(response) {
   // do some transformations
   response.date = moment(response.date, "YYYY-MM-dd").format("dd MM YYYY");
});

Таким же образом я делаю преобразование данных перед их сохранением.

var record.$save();

Отправленные мной данные POST возвращаются API. Это возвращаемое значение становится новым значением объекта Resource.

Однако это не тот формат, который я использую при отображении, как продемонстрировано в GET.

Есть ли способ запретить $save() заменить значение ресурса?

1 ответ

Существует открытая проблема, чтобы добавить опцию в ngResource, чтобы отключить это поведение ( # 8370).

В то же время, используйте transformResponse вариант в вашем save определение действия:

app.factory('Things', ['$resource', function($resource) {
    var transform = function(data, headersGetter) {
        data.date = moment(response.date, "YYYY-MM-dd").format("dd MM YYYY");
        return data;
    };

    return $resource('/thing/:id', {}, {
        'get': {
            'transformResponse': transform
        },
        'save': {
            'transformResponse': transform
        }
    });
}]);

Смотрите: https://docs.angularjs.org/api/ngResource/service/$resource

Другие вопросы по тегам