我有一个资源,其中get正在接收像{metadata : {}, data : {}}
这样的对象。但是当我保存时,我只想发送数据而不是元数据。
.factory("$profile", function($resource) {
return $resource("service/profile/:profileid");
})
.controller('ProfileController', function($scope, $routeParams, $profile) {
$scope.profile = new $profile();
$scope.doSave = function() {
// need to send profile.data only << ----------
$scope.profile.$save($routeParams, function(data) {
console.log("saved profile");
});
}
我现在所做的是以下内容:
.controller('ProfileController', function($scope, $routeParams, $profile) {
$scope.profile = new $profile();
$scope.doSave = function() {
$scope.profile.data.$save = $scope.profile.$save;
$scope.profile.data.$save($routeParams, function(data) {
console.log("saved profile");
});
}
这有效,但我确信有一种更清洁的方式可以做我需要做的事情。理想情况下,我会告诉资源在“save”上查找数据属性。
答案 0 :(得分:0)
是的,你可以这样做。您需要的属性是'transformResponse'(在GET上)和'transformRequest'(在Post上)。
.factory("$profile", function($resource) {
return $resource("service/profile/:profileid",
{},
{
get: {
method: 'GET',
transformResponse: function(response, headers){
return response.data;
}
},
post: {
method: 'POST',
transformRequest: function (request, headers) {
var result = request.data; // << This line might not be exactly what you need.
return result;
}
}
});
})
我实际上怀疑根本不需要transformRequest部分(但你确实要求它)。
$scope.profile.$save($routeParams, function(data) {
console.log("saved profile");
});