如何在数组中使用PUT或POST传递URL中的查询字符串?

时间:2014-03-09 14:56:20

标签: angularjs angular-resource

我正在尝试使用角度$ resource服务对元素列表进行更新:

.factory('Elements', ['$resource', function($resource) {
    return $resource('../api/:type/:id', 
        {   type:'@type', id:'@id' }, 
        {   update: { method: 'PUT' }, 
            updateList: { method: 'PUT', isArray: true }
        });
    }])

1 在控制器内,此功能更新单个对象

element.update({ 'name': name, 'value': value }); 

它使用此URL发送HTTP PUT请求:/api/theType/theId?name=theName&value=theValue。这工作正常。

2 现在,使用updateList方法,此函数更新对象数组,而不是单个对象:

elements.updateList({ 'name': name, 'value': value }); 

问题:

在这种情况下,请求的网址为/api/theType。但是为什么查询字符串(name=theName&value=theValue)不再存在了?

如何在使用PUT更新数组时在URL中传递查询字符串?

1 个答案:

答案 0 :(得分:2)

两个电话都可能被打破,你不知道。在当前状态下,您只需使用parameters对象而不是实际数据更新服务器。

在非GET操作上传递单个对象时,它将作为更新数据传递。来自文档:

  

类对象或实例对象上的操作方法可以是   使用以下参数调用:

     

...

     
      
  • 非GET“类”操作:Resource.action([parameters], postData, [success], [error])
  •   

所以这只是对动作方法的误用。在动作参数之后发送数据对象以进行更新,你可以去:

element.update({ 'name': name, 'value': value }, dataObject);

来源

$resource on the AngularJS docs