2012-08-17 10 views
10

I variabile $scope.data= [{column:"age", operator: ">", value: "50"}, {column:"name", operator: "=", value: "Tonda"}]. E il servizio per l'invio dei dati al server:AngularJS: ngResource e array di oggetto come parametri dell'URL

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

Perché URL contiene "nonsense" dopo aver chiamato `serverApp.saveData()? - .../myurl? 0 =% 5Bobject + Object% 5D & 1 =% 5Bobject + Object% 5D - Sembra che i parametri possano essere solo oggetti semplici (1D).

Come posso serializzare correttamente l'oggetto $scope.cfgcondition in parametri di servizio serverApp (ad esempio URL)? Grazie.

+0

Sembra che stia chiamando GET per qualche motivo. Poiché i parametri sono nell'URL anziché nel corpo. –

+0

Probabilmente sarà necessario vedere più codice. Ti piace da dove lo chiami. –

risposta

18

L'attributo "params" definisce i parametri della query URL, che presumo sia il comportamento previsto. Se fosse solo un semplice oggetto, non un array, allora si potrebbe utilizzare $ risparmiare qualcosa come

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

Per pubblicare una matrice è necessario definire la propria azione e passare i dati come secondo parametro.

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

* A cura di risolvere gli errori per quanto riguarda gli array -. Ho pensato $ risorsa Impossibile pubblicare gli array, ma capito che mi sbagliavo!

+1

Ottima risposta, vorrei poterlo accettare. –

Problemi correlati