角度Js。如何修复错误:$ resource:badcfg响应与配置的参数不匹配

时间:2014-07-16 04:06:14

标签: javascript angularjs

我想通过使用$ resources从json文件中获取数据,但我总是得到错误。 但是,我能用$ http做到这一点,因此我认为我的服务设置有问题。

这是我的控制器:

$scope.serviceRes = serviceRes.get({fileName: 'services.json'}, function(svcs) {

});

这是我的服务

angular.module('myservices', ['ngResource'])
  .factory('serviceRes', ['$resource',
  function($resource){
    return $resource(':fileName', {}, {
      query: {method:'GET', params:{fileName:'services.json'}, isArray:false}
    });
  }]);

注意:我已经尝试过使用isArray:true,但它仍无效。

以下是来自https://docs.angularjs.org/error/ $ resource / badcfg的错误解释?p0 = array:

当$ resource服务期望响应可以作为数组反序列化,接收对象,反之亦然时,会发生此错误。默认情况下,除了需要数组的查询之外,所有资源操作都需要对象。 要解决此错误,请确保您的$ resource配置与从服务器返回的数据的实际格式相匹配。

但不幸的是,我仍然不知道如何解决它。我已经看过类似的帖子Error: [$resource:badcfg] Error in resource configuration. Expected response to contain an array but got an object?,但仍然无法解决它。 有什么帮助吗?

修改

这是json文件

[
    {"name": "aaaa",
     "time": "3.00 PM",
     "desc": "Description 1",
     "cp": "John (0004 123 456)",
     "email":"email@email.com"},
    {"name": "bbbbb",
     "time": "12.00 PM",
     "desc": "Description 2",
     "cp": "John Doe (0414 141 414)",
     "email":"email2@yahoo.com"}
]

1 个答案:

答案 0 :(得分:0)

不是使用serviceRes.get(...)方法,而是放置serviceRes.query(...),同时保持原始参数不做任何更改,这会导致以下语句:

$scope.serviceRes = serviceRes.query({fileName: 'services.json'}, function(svcs) {

});

正如$resource documentation所说(请查看"返回"部分):query()方法是唯一预先设置isArray值的方法true,在我看来 - 这意味着query是在响应中返回数组的保证函数。