Подтвердить что ты не робот

AngularJS: ngResource и массив объекта в качестве параметров URL-адреса

У меня есть переменная $scope.data= [{column:"age", operator: ">", value: "50"}, {column:"name", operator: "=", value: "Tonda"}]. И служба для отправки данных на сервер:

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

Почему URL-адрес содержит "бессмыслицу" после вызова `serverApp.saveData()? -.../myurl? 0 =% 5Bobject + Object% 5D & 1 =% 5Bobject + Object% 5D - Кажется, что параметры могут быть только простым (1D) объектом.

Как правильно упорядочить объект $scope.cfgcondition в параметрах службы serverApp (например, URL)? Спасибо.

4b9b3361

Ответ 1

Атрибут params определяет параметры URL-запроса, который, как я предполагаю, является предполагаемым поведением. Если бы это был просто простой объект, а не массив, тогда вы могли бы просто использовать $save что-то вроде

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

* Отредактировано для исправления искажений в отношении массивов - я думал, что $resource не может массивы POST, но понял, что я ошибся!