2012-08-17 15 views
10

私は変数$scope.data= [{column:"age", operator: ">", value: "50"}, {column:"name", operator: "=", value: "Tonda"}]を持っています。サーバーへのデータ送信サービス:AngularJS:ngResourceオブジェクトの配列とURLのパラメータとしての配列

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

「serverApp.saveData()」を呼び出した後にURLに「ナンセンス」が含まれているのはなぜですか? - .../myurl? 0 =%5Bobject +オブジェクト%5D & 1 =%5Bobject +オブジェクト%5D - それは単純な(1D)オブジェクトのみである可能性があります。

オブジェクト$scope.cfgconditionをサービスのパラメータserverApp(たとえばURL)に正しくシリアル化できますか?ありがとう。

+0

何らかの理由でGETを呼び出すように見えます。 paramsは本文ではなくURLにあります。 –

+0

おそらくもっとコードを見る必要があります。あなたがどこからそれを呼んでいるかのように。 –

答えて

18

「params」属性は、URLクエリパラメータを定義します。これは、意図した動作であると想定しています。それは単純なオブジェクトではなく、配列だった場合、あなたはちょうどあなたがあなた自身のアクションを定義し、として2番目のパラメータでデータを渡すために必要な配列を投稿するには

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

*配列についての虚偽記載を修正するために編集された - 。私は$リソースが配列をPOSTができなかったと思ったが、私が間違っていたことを考え出しました!

+1

非常に良い答え、私はそれを受け入れることができたらいいですね。 –

関連する問題