我想通过使用$ 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"}
]
答案 0 :(得分:0)
不是使用serviceRes.get(...)
方法,而是放置serviceRes.query(...)
,同时保持原始参数不做任何更改,这会导致以下语句:
$scope.serviceRes = serviceRes.query({fileName: 'services.json'}, function(svcs) {
});
正如$resource documentation所说(请查看"返回"部分):query()
方法是唯一预先设置isArray
值的方法true
,在我看来 - 这意味着query
是在响应中返回数组的保证函数。