这是我的服务:
app.factory("ResourceService", function ($resource, $q, $http) {
return {
getAll: function () {
var deferred = $q.defer();
$http.get('https://dog.ceo/api/breeds/list/all').then(function (response) {
deferred.resolve(response);
}, function (error) {
deferred.reject(error);
});
return deferred.promise;
},
allUsingResource: function () {
return $resource('https://dog.ceo/api/breeds/list/all');
}
}
});
这是我的控制者:
app.controller("Controller", function ($scope, ResourceService) {
function getAll() {
ResourceService.getAll().then(function (response) {
$scope.all = response.data;
}, function (error) {
console.log(error);
});
}
function runAll() {
var data = ResourceService.allUsingResource();
data.query(function (response) {
console.log(response);
}, function (error) {
console.log(error);
});
}
runAll();
getAll();
});
虽然所有内容都以$ http的速度膨胀,但我使用$ resource获得了badcfg:
错误:[$ resource:badcfg] http://errors.angularjs.org/1.6.5/ $ resource / badcfg?p0 = query& p1 = array& p2 = object& p3 = GET& p4 = https%3A%2F%2Fdog.ceo%2Fapi %2Fbreeds%2Flist%2Fall
我错过了什么?
答案 0 :(得分:0)
默认情况下,当您在data.query
对象上运行$resource
时,它需要array in response:
'query': {method:'GET', isArray:true},
因此,请确保返回数组而不是https://dog.ceo/api/breeds/list/all
从URL Angularjs中读取错误:
操作
query
的资源配置出错。预期的响应包含一个数组但得到一个对象(请求:GET https://dog.ceo/api/breeds/list/all)描述
当$ resource服务期望响应可以作为数组反序列化但接收对象时,会发生此错误,反之亦然。默认情况下,所有资源操作都需要对象,但需要数组的查询除外。
要解决此错误,请确保您的$ resource配置与从服务器返回的数据的实际格式相匹配。
有关详细信息,请参阅$resource API参考文档。