我有变量$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)?感谢。
答案 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数组,但我发现我错了!