Angular $ resource保存包含数组的对象

时间:2016-01-28 07:44:09

标签: javascript jquery angularjs rest

我们假设我们有Person $资源,如下所示:

$scope.person = {
  name: 'Max',
  friends: [1, 2, 3]
}

如果我们Person.save($scope.person)到服务器,它将发送以下参数:

name: 'Max'
friends: '1'
friends: '2'
friends: '3'

所以我无法访问服务器上的friends数组。只有最后一个元素可以访问。

使用$resource将包含数组的对象保存到服务器的正确方法是什么?

P.S。我知道一种真正的hacky方式,即将friends属性重命名为friends[],但这并没有解决我的问题,因为我有很多这些,我可以&# 39;来回重新定义属性

1 个答案:

答案 0 :(得分:1)

来自documentation

non-GET "class" actions: Resource.action([parameters], postData, [success], [error])

所以你必须使用:

Person.save(null, $scope.person)

(第一个参数是url params的对象,第二个是要发送的数据)

然后您的朋友阵列将在请求正文中提供。

另请注意,如果您有人员资源,则可以执行以下操作:

var person = $resource(...);
person.name = 'john';
person.friends = ['friend1' ,'friend2'];
person.$save();