2012-08-17 13 views
10

Mam zmienną $scope.data= [{column:"age", operator: ">", value: "50"}, {column:"name", operator: "=", value: "Tonda"}]. I usług za przekazywanie danych do serwera:AngularJS: ngResource i tablica obiektów jako parametry do adresu URL

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

Dlaczego URL zawiera "nonsens" po wywołaniu `serverApp.saveData()? - .../myurl? 0 =% 5Bobject + Object% 5D & 1 =% 5Bobject + Object% 5D - Wygląda na to, że parametry mogą być tylko prostymi (1D) obiektami.

Jak poprawnie serializować obiekt $scope.cfgcondition na parametry usługi serverApp (np. Na adres URL)? Dzięki.

+0

Wygląda na to, że wywołuje GET z jakiegoś powodu. Ponieważ parametry są w adresie URL, a nie w treści. –

+0

Prawdopodobnie potrzebujesz więcej kodu. Jak tam, skąd dzwonisz. –

Odpowiedz

18

Atrybut "params" definiuje parametry zapytań URL, co do których zakładam, że jest zamierzonym zachowaniem. Jeśli to był tylko prosty przedmiot, a nie tablicą, a następnie można po prostu użyć $ zapisać coś

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

Aby dodawać tablicę trzeba zdefiniować własne działania i przekazać dane jako drugi parametr.

$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 $ zasób https://docs.angularjs.org/api/ngResource/service/$resource

* Zmieniano naprawić nieprawidłowości dotyczących tablic. - Myślałem $ zasób nie można wysłać tablic, ale zorientowaliśmy się, że się myliłem!

+1

Bardzo dobra odpowiedź, chciałbym móc ją zaakceptować. –

Powiązane problemy