就angular而言,我是一个完全的傻瓜,刚刚完成了代码学校教程,我已经达到了我的第一个障碍。
我正在获取Error: [$resource:badcfg] Error in resource configuration. Expected response to contain an array but got an object
这是我的代码:
var bulletinApp = angular.module('bulletinApp', ['ngResource']);
bulletinApp.controller('PostsController', ['$scope', 'Post', function($scope, Post) {
$scope.heading = 'Welcome';
$scope.posts = Post.query();
$scope.newPost = {
title: 'Test Post'
}
}]);
bulletinApp.factory('Post', ['$resource', function($resource) {
return $resource('/posts');
}]);
我在这里找到了答案:在AngularJS/Rrails 中使用$resource.query()函数时,资源配置出错
这意味着我应该在我的资源声明中添加以下内容:
'query': {method: 'GET', isArray: false }
问题是我不知道该把这个添加到哪里,甚至不知道这是否是我的问题所在?
编辑:
bulletinApp.factory('Post', ['$resource', function($resource) {
return $resource('/posts', {'query': {method: 'GET', isArray: false}});
}]);
在这之后,我仍然收到错误。同样在教程中,没有必要这样做,我已经大致遵循了这一点,为什么get方法会得到一个对象而不是一个数组?
在'/posts'
之后添加{}
。
bulletinApp.factory('Post', ['$resource', function($resource) {
return $resource('/posts', {}, {'query': {method: 'GET', isArray: false}});
}]);
有关详细信息,请参阅本文。
Get的结果是数组还是对象?如果它是一个数组,则设置isArray=true,否则设置isArray=false,就像上面中的那个人所说的那样
bulletinApp.factory('Post', ['$resource', function($resource) {
return $resource('/posts', {}, {'query': {method: 'GET', isArray: false/*true*/}});
}]);
注意IsArray与IsArray不同。或者,如果您通过json获取数据,请将*.json添加为url
控制台中错误消息的下一行是错误的完整描述的url:
Error: [$resource:badcfg] Error in resource configuration. Expected response to contain an object but got an array
http://errors.angularjs.org/1.2.28/$resource/badcfg?p0=object&p1=array
根据链接的页面,要么你的服务器没有返回你认为的结果,要么你需要告诉$resource从服务器获得一个数组。