10

我有变量$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 - 看来,参数只能是简单的(1D)对象。

如何正确地将对象序列$scope.cfgcondition化为服务参数serverApp(例如,到 URL)?谢谢。

4

1 回答 1

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 .$resource https://docs.angularjs.org/api/ngResource/service/$resource

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

于 2012-08-17T19:35:58.247 回答