2012-08-17 6 views
10

Ich habe Variable $scope.data= [{column:"age", operator: ">", value: "50"}, {column:"name", operator: "=", value: "Tonda"}]. Und Service für Daten an den Server übermitteln:AngularJS: ngResource und Array von Objekt als Parameter zu URL

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

Warum URL enthält "Unsinn" nach dem Aufruf von `serverApp.saveData()? - .../Myurl? 0 =% 5Bobject + Objekt% 5D & 1 =% 5Bobject + Objekt% 5D - Es scheint, dass Params nur einfache (1D) Objekte sein können.

Wie kann ich das Objekt $scope.cfgcondition in die Serviceparameter serverApp (z. B. URL) ordnungsgemäß serialisieren? Vielen Dank.

+0

Sieht so aus, als würde es aus irgendeinem Grund ein GET aufrufen. Da die Parameter in der URL und nicht im Text enthalten sind. –

+0

Wahrscheinlich müssen Sie mehr Code sehen. Zum Beispiel, wo du es herrufst. –

Antwort

18

Das Attribut 'params' definiert URL-Abfrageparameter, von denen ich annahm, dass sie beabsichtigt sind. Wenn es nur eine einfache Aufgabe war es, kein Array, dann könnte man nur $ etwas wie

speichern verwenden
var MyRequest = $resource('/notreally'); 
$scope.data = new MyRequest; 
// get stuff into $scope.data 
$scope.doSubmit = function() { $scope.data.$save(); } 

Um ein Array zu schreiben Sie müssen Ihre eigene Aktion definieren und die Daten in als zweiten Parameter übergeben.

$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

* Herausgegeben falschen Angaben bezüglich Arrays zu beheben. - Ich dachte, resource $ nicht Arrays POST konnte, aber herausgefunden, dass ich falsch war!

+1

Sehr gute Antwort, ich wünschte ich könnte es akzeptieren. –

Verwandte Themen