控制台中的角度资源错误

时间:2015-09-12 15:36:04

标签: angularjs

我有一个角度资源服务,然后将数据返回给控制器,我按名称获取所有数据和数据。

我的应用程序在浏览器中运行正常,但我在控制台中遇到资源错误。资源配置错误。

我查看了各种问题,每个人都声明我需要将配置属性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,等}

1 个答案:

答案 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});

  });

}());

出于某种原因,我仍然不确定$资源是否会将它们接受到同一个控制器中。