0

我正在使用带有 $resource 的 angularjs 1.2.0。我想要一些 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'},
      });
4

2 回答 2

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 函数中实现自己的代码来自定义发送到服务器的确切内容。在我的示例中,我向 REST 客户端添加了一个新函数,但您也可以覆盖现有函数。请注意,“transformRequest”仅在 1.1+ 版本中可用

于 2013-11-06T20:31:37.577 回答
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);
    })
};

希望这是一些帮助。让我知道这是否接近您的要求,我可以提供更多帮助。

邮政 在此处输入图像描述

删除 在此处输入图像描述

于 2013-11-02T10:37:44.697 回答