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 - params は単純な (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(); }

配列を投稿するには、独自のアクションを定義し、データを 2 番目のパラメーターとして渡す必要があります。

$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 は配列を POST できないと思っていましたが、間違っていることがわかりました!

于 2012-08-17T19:35:58.247 に答える