Запретить $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