错误:[$ resource:badcfg]资源配置错误.预期的响应包含一个数组但得到一个对象?

noc*_*noc 71 angularjs

如何修复错误:

[$ 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'}});
    })
Run Code Online (Sandbox Code Playgroud)

//控制器

$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];

            }

        }
    });

});
Run Code Online (Sandbox Code Playgroud)

小智 168

此外,如果您的服务是发送对象而不是数组,则将isArray:false添加到其声明中.

'query': {method: 'GET', isArray: false }
Run Code Online (Sandbox Code Playgroud)


Kar*_*ara 103

$resource("../rest/api"}).get();
Run Code Online (Sandbox Code Playgroud)

返回一个对象.

$resource("../rest/api").query();
Run Code Online (Sandbox Code Playgroud)

返回一个数组.

你必须使用:

return $resource('../rest/api.php?method=getTask&q=*').query();
Run Code Online (Sandbox Code Playgroud)

  • 从错误消息本身很难看出我使用了不同的方法. (3认同)

Vad*_*dim 33

首先,您应该$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' }}
    );
  })
Run Code Online (Sandbox Code Playgroud)

文档

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


Hit*_*dha 19

为了使用$ resource服务处理数组,建议您使用查询方法.如下所示,查询方法是为处理数组而构建的.

    { 'get':    {method:'GET'},
      'save':   {method:'POST'},
      'query':  {method:'GET', isArray:true},
      'remove': {method:'DELETE'},
      'delete': {method:'DELETE'} 
   };
Run Code Online (Sandbox Code Playgroud)

用户 $resource("apiUrl").query();