Ошибка: [$ resource: badcfg] Ошибка в настройке ресурсов. Ожидаемый ответ содержать массив, но получил объект?
Как исправить ошибку:
[$ resource: badcfg] Ошибка в конфигурации ресурсов. Ожидаемый ответ содержать массив, но получить объект?
//Сервис
angular.module('admin.services', ['ngResource'])
// GET TASK LIST ACTIVITY
.factory('getTaskService', function($resource) {
return $resource('../rest/api.php?method=getTask&q=*',{ 'get': {method:'GET'}});
})
//Контроллер
$scope.getTask = getTaskService.query(function (response) {
angular.forEach(response, function (item) {
if (item.numFound > 0) {
for(var i = 0; i < item.numFound; i++) {
$scope.getTasks[i] = item.docs[i];
}
}
});
});
Ответы
Ответ 1
Прежде всего, вы должны настроить $resource
по-разному: без параметров запроса в URL-адресе. Параметры запроса по умолчанию могут передаваться как свойства второго параметра в resource(url, paramDefaults, actions)
. Следует также упомянуть, что вы настраиваете метод ресурса get
и используете query
.
Сервис
angular.module('admin.services', ['ngResource'])
// GET TASK LIST ACTIVITY
.factory('getTaskService', function($resource) {
return $resource(
'../rest/api.php',
{ method: 'getTask', q: '*' }, // Query parameters
{'query': { method: 'GET' }}
);
})
Documentation
http://docs.angularjs.org/api/ngResource.$resource
Ответ 2
Кроме того, если ваша служба отправляет объект вместо массива, добавьте в его объявление isArray: false.
'query': {method: 'GET', isArray: false }
Ответ 3
$resource("../rest/api"}).get();
вернуть объект.
$resource("../rest/api").query();
вернуть массив.
то вы должны использовать:
... return $resource('../rest/api.php?method=getTask&q=*).query();
Ответ 4
Чтобы обрабатывать массивы с помощью службы $resource, она предложила использовать метод запроса. Как вы можете видеть ниже, метод запроса построен для обработки массивов.
{ 'get': {method:'GET'},
'save': {method:'POST'},
'query': {method:'GET', isArray:true},
'remove': {method:'DELETE'},
'delete': {method:'DELETE'}
};
Пользователь $resource("apiUrl").query();
Ответ 5
Убедитесь, что вы также отправляете правильные параметры. Это случилось со мной после перехода на UI-Router.
Чтобы исправить это, я изменил $routeParams, чтобы использовать $stateParams в моем контроллере. Основная проблема заключалась в том, что $stateParams больше не отправлял надлежащий параметр ресурсу.