AngularJS:ngResource和对象数组作为URL的参数

时间:2012-08-17 08:42:13

标签: angularjs

我有变量$scope.data= [{column:"age", operator: ">", value: "50"}, {column:"name", operator: "=", value: "Tonda"}]。以及向服务器提交数据的服务:

angular.module('myServices', ['ngResource']).
  factory('serverApp', function($resource, $scope){
    return $resource('myurl/', {}, {
        saveData: {method:'POST', params: $scope.data}
    });
});

为什么在调用`serverApp.saveData()之后URL包含“废话”? - ... / myurl? 0 =%5Bobject + Object%5D& 1 =%5Bobject + Object%5D - 看起来,params只能是简单(1D)对象。

如何将对象$scope.cfgcondition正确序列化为服务serverApp的句子(例如URL)?感谢。

1 个答案:

答案 0 :(得分:18)

'params'属性定义了URL查询参数,我认为这是预期的行为。如果它只是一个简单的对象,而不是一个数组,那么你可以使用$ save之类的东西,比如

var MyRequest = $resource('/notreally'); 
$scope.data = new MyRequest;
// get stuff into $scope.data
$scope.doSubmit = function() { $scope.data.$save(); }

要发布数组,您需要定义自己的操作并将数据作为第二个参数传递。

$scope.data= [{column:"age", operator: ">", value: "50"}, 
              {column:"name", operator: "=", value: "Tonda"}]; 
var MyRequest = $resource('/notreally', {}, {saveData: {method:'POST', isArray: true}}); 
$scope.doSubmit = function() { MyRequest.saveData({}, $scope.data);

http://docs.angularjs.org/api/ngResource。$资源 https://docs.angularjs.org/api/ngResource/service/$resource

*编辑修复有关数组的错误陈述 - 我认为$ resource无法POST数组,但我发现我错了!