我正在使用angularjs 1.2.0和$ resource。我想有一些PUT / POST实例操作不会将整个对象发送到服务器但只有一些字段,在某些情况下完全没有数据。
有可能吗?我到处搜索但找不到任何东西
更新
DELETE请求也会发生这种情况:
鉴于此代码:
group.$deleteChatMessage({messageId: message.id}, function(){
var i = _.indexOf(group.chat, message);
if(i !== -1) group.chat.splice(i, 1);
});
请求是这样的:
查看整个模型的发送方式(在“请求有效负载”下)。
这是资源:
var Group = $resource(API_URL + '/api/v1/groups/:gid',
{gid:'@_id', messageId: '@_messageId'},
{
deleteChatMessage: {method: "DELETE", url: API_URL + '/api/v1/groups/:gid/chat/:messageId'},
});
答案 0 :(得分:3)
这对我有用:
$resource(SERVER_URL + 'profile.json',
{},
{
changePassword :
{
method : 'POST',
url : SERVER_URL + 'profile/changePassword.json',
// Don't sent request body
transformRequest : function(data, headersGetter)
{
return '';
}
}
});
您可以通过在transformRequest函数中实现自己的代码来自定义exaclty发送到服务器的内容。在我的示例中,我向REST客户端添加了一个新函数,但您也可以覆盖现有函数。请注意,'transformRequest'仅适用于版本1.1 +
答案 1 :(得分:0)
您可以专门使用$ http。但是,我有一个案例,我用于一个可能有用的项目。我的例子也是从服务器返回一个数组,但你可以改变它。
在我的服务中:
app.factory('mySearch', ['$resource', function($resource) {
return $resource('/api/items/:action', {}, {
search: { method: 'POST', isArray: true,
params: { action: 'search' }
}
});
}
]);
在我的控制器中:
我可以建立自定义参数来发布到服务器,或者如果我只需要用户选择的表行中的两个字段。
var one = "field_one";
var two = "field_two";
$scope.search({one: one, two: two});
然后我可以通过一个事件发布这些并传递自定义参数
$scope.search = function(customParams) {
mySearch.search({query: customParams}, function(data) {
$scope.items = data;
}, function(response) {
console.log("Error: " + response.status);
})
};
希望这是一些帮助。让我知道这是否接近你所寻求的,我可以提供更多帮助。
POST
DELETE