错误:资源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' }} ); })
文档
另外,如果你的服务是发送一个对象而不是数组, 那么在它的声明中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不再发送适当的参数给资源。