我是一个关于角度的完整菜鸟,只是通过一个代码学教程,我已经达到了我的第一个障碍。
我正在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');
}]);
我在这里找到答案: Error in resource configuration while using $resource.query() function with AngularJS/Rails
那说我应该将它添加到我的资源声明中:
'query': {method: 'GET', isArray: false }
问题是我不知道我应该在哪里添加这个,或者即使这是我遇到的问题?
编辑:
bulletinApp.factory('Post', ['$resource', function($resource) {
return $resource('/posts', {'query': {method: 'GET', isArray: false}});
}]);
在此之后我仍然收到错误。同样在教程中,没有必要这样做,而且我几乎都遵循了它,为什么get方法会得到一个对象而不是一个数组呢?
答案 0 :(得分:16)
在{}
之后添加'/posts'
。
bulletinApp.factory('Post', ['$resource', function($resource) {
return $resource('/posts', {}, {'query': {method: 'GET', isArray: false}});
}]);
有关详细信息,请参阅this post。
答案 1 :(得分:6)
' 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
答案 2 :(得分:0)
控制台中错误消息的下一行是更全面描述错误的网址:
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
根据linked page,您的服务器没有返回您认为的内容,或者您需要告诉$ resource期望来自服务器的数组。