错误:资源configuration错误。 预期的响应包含一个数组,但有一个对象?

如何修复错误:

[$ resource:badcfg]资源configuration错误。 预期的响应包含一个数组,但有一个对象?

//服务

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]; } } }); }); 

首先,你应该以不同的方式configuration$resource :URL中没有查询参数。 默认查询参数可以作为resource(url, paramDefaults, actions)第二个参数的属性传递。 还要提到的是,您可以configurationget方法的资源和使用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' }} ); }) 

文档

http://docs.angularjs.org/api/ngResource.$resource

另外,如果你的服务是发送一个对象而不是数组, 那么在它的声明中joinisArray:false

 'query': {method: 'GET', isArray: false } 

$resource("../rest/api"}).get(); 返回一个对象。

$resource("../rest/api").query(); 返回一个数组。

那么你必须使用:… return $resource('../rest/api.php?method=getTask&q=*).query();

为了使用$ resource服务处理数组,build议使用查询方法。 正如你在下面看到的,查询方法是为处理数组而构build的。

  { 'get': {method:'GET'}, 'save': {method:'POST'}, 'query': {method:'GET', isArray:true}, 'remove': {method:'DELETE'}, 'delete': {method:'DELETE'} }; 

User $resource("apiUrl").query();

确保你也发送正确的参数。 切换到UI-Router后,这发生在我身上。

为了解决这个问题,我改变了$ routeParams以在我的控制器中使用$ stateParams。 主要的问题是$ stateParams不再发送适当的参数给资源。