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

use*_*465 10 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}
    });
});
Run Code Online (Sandbox Code Playgroud)

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

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

小智 18

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

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

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

$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);
Run Code Online (Sandbox Code Playgroud)

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

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