我正在尝试使用角度$ 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中传递查询字符串?
答案 0 :(得分:2)
两个电话都可能被打破,你不知道。在当前状态下,您只需使用parameters对象而不是实际数据更新服务器。
在非GET操作上传递单个对象时,它将作为更新数据传递。来自文档:
类对象或实例对象上的操作方法可以是 使用以下参数调用:
...
- 非GET“类”操作:
Resource.action([parameters], postData, [success], [error])
所以这只是对动作方法的误用。在动作参数之后发送数据对象以进行更新,你可以去:
element.update({ 'name': name, 'value': value }, dataObject);