从改变资源数据AngularJS中防止$ resource。$ save()

时间:2015-04-18 02:59:34

标签: angularjs angularjs-resource

在下面的示例中,我使用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 个答案:

答案 0 :(得分:0)

有一个未解决的问题是在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