我有一个角度资源服务,然后将数据返回给控制器,我按名称获取所有数据和数据。
我的应用程序在浏览器中运行正常,但我在控制台中遇到资源错误。资源配置错误。
我查看了各种问题,每个人都声明我需要将配置属性isArray设置为false或true。
我试过这样做,但我仍然收到错误。
任何想法都非常感激。
这是我的服务:
(function() {
var app = angular.module('test');
app.service('ContactResource', function($resource) {
return $resource('/contacts/:firstname', {},
{'update': {method: 'PUT'}},
{'query': { method: 'GET', isArray: true }},
{'get': { method: 'GET', isArray: false }}
);
});
}());

这是我的控制器:
(function() {
var app = angular.module('test');
app.controller('contactsCtrl', function($scope, $routeParams, ContactResource) {
$scope.contacts = ContactResource.query();
$scope.singlecontact = ContactResource.get({firstname: $routeParams.firstname});
});
}());

我得到的错误是:错误:[$ resource:badcfg] http://errors.angularjs.org/1.4.2/ $ resource / badcfg?p0 = get& p1 = object& p2 = array& p3 = GET& p4 =%2Fcontacts
当我点击它时说:
操作get
的资源配置出错。预期响应包含一个对象但得到一个数组(请求:GET / contacts)
当我得到url是/ contacts时,响应是:
[{EmailAddress:some@email.com,etc}]
当网址为/ contacts / firstname时,响应为:
{EmailAddress的:一些@ email.com,等}
答案 0 :(得分:0)
我通过添加一个名为single controller的新控制器并将服务分成两个函数来解决问题。这是我的代码现在的样子。
这是服务:
(function() {
var app = angular.module('test');
app.service('ContactResource', function($resource, $routeParams) {
this.all = function() {
return $resource('/contacts', {},
{'query': { method: 'GET', isArray: true }}
)};
this.single = function() {
return $resource('/contacts/:firstname', {firstname: '@firstname'},
{'query': { method: 'GET', isArray: false }}
);
}
});
}());
控制器:
(function() {
var app = angular.module('test');
app.controller('contactsCtrl', function($scope, $routeParams, ContactResource) {
$scope.contacts = ContactResource.all().query();
});
app.controller('singleCtrl', function($scope, $routeParams, ContactResource) {
$scope.singlecontact = ContactResource.single().query({firstname: $routeParams.firstname});
});
}());
出于某种原因,我仍然不确定$资源是否会将它们接受到同一个控制器中。