2013-09-06 2 views
2

У меня есть приложение api и angularjs для отдыха. Я использую $ resource внутри фабрики для работы с этим api. У меня проблема с одним запросом. Я отправляю api для создания некоторых элементов.

/api/service/thing/make-things 

Необходимо передать в мой запрос некоторые данные. Вот что я делаю:

$scope.someRequest = new SomeRequest(); // factory object returning an $resource 
$scope.someRequest.some_field = 'abc'; 
$scope.someRequest.$save({someAdditionalParams:'123'}, function(values){...handling response...}); 

Он работает отлично и сообщение данных Я хочу отправить, но в данном случае моего поста ответ массив объектов.

[{somestuff:'123'}, {somestuff:'321'} ... ] 

Угловые пытается отобразить его обратно на объект и бросает мне ошибку, что объект был ожидаемым, но получил массив. Я попытался создать отдельный метод ресурса с isArray: 1, но он все еще не прошел с той же ошибкой.

Итак, мой вопрос: как справиться с этой ситуацией? Можно ли отменить копирование $ save result в объект $ resource?

ответ

5

Используя $ save, он попытается отобразить его обратно. Вы можете создать новое действие с isArray: true, которое не будет пытаться отобразить результат. Разумеется, вам придется вручную обрабатывать результаты.

var someRequest = $resource('/api/service/thing/make-things',{'create': {method:'POST', isArray:true}}); 
someRequest.create({some_field = 'abc',someAdditionalParams:'123'},function(data){ 
    $scope.someRequestArray = data; 
}); 

Настоящая архитектура RESTful должна вернуть то, что было создано, поэтому $ save работает так, как она делает. Ваши потребности немного разные, поэтому требуется специальное действие.