2012-08-17 5 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에 "말도 안되는 소리"가 포함 된 이유는 무엇입니까? - .../마이얼? 0 = % 5Bobject + Object % 5D & 1 = % 5Bobject + Object % 5D - params는 단순한 (1D) 객체 일 수 있습니다.

$scope.cfgcondition 객체를 서비스 매개 변수 serverApp (예 : URL)으로 올바르게 직렬화 할 수 있습니까? 감사.

+0

어떤 이유로 든 GET을 호출하는 것처럼 보입니다. params는 본문이 아닌 URL에 있습니다. –

+0

아마 더 많은 코드가 필요합니다. 네가 어디서 전화했는지 말야. –

답변

18

'params'속성은 URL 쿼리 매개 변수를 정의하며 이는 의도 된 동작이라고 가정합니다. 그냥 단순한 객체가 아닌 배열 인 경우에, 당신은 당신이 당신의 자신의 작업을 정의하고 두 번째 매개 변수의 데이터를 전달해야 배열을 게시하려면

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

. * - 나는 $ 자원이 배열을 게시 할 수 없습니다 생각했지만, 내가 잘못했다 알아 냈어!

+1

아주 좋은 답변입니다. 받아 들일 수 있기를 바랍니다. –

관련 문제