Неизвестный поставщик ресурсов в AngularJS

0

Я создаю угловое приложение, использующее эшафот от Yeomen. Я хочу, чтобы o отправлял и получал данные из моей службы REST, но у меня проблема с поставщиком ресурсов.

У меня есть простой контроллер:

angular.module('fronterApp')
  .controller('ClubCtrl', function ($scope, ClubService) {
    $scope.find = function(){
     $scope.club = ClubService.find();
    };
  });

Обслуживание:

var app = angular.module('fronterApp');
app.service('ClubService',  function (ClubResource) {

    var find = function(){
      return ClubResource.find({id: 1});
    };

    return{
      find: find
    };
  });

Мой поставщик ресурсов:

var app = angular.module('fronterApp', ['ngResource', 'ngRoute']);
var server = 'http://localhost:8080';
app.run(function($http) {
  $http.defaults.headers.common['Content-Type'] = 'application/x-www-form-urlencoded';
  $http.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';
});
app.factory('ClubResource',  function($resource) {
  return $resource(server + '/api/clubs/:id', {id: '@id'});
});

И теперь я хочу получить данные в контроллере, используя сервис, который использует провайдер. Но после запуска приложения консоль js говорит:

Error: [$injector:unpr] Unknown provider: ClubResourceProvider <- ClubResource <- ClubService

Я добавил <script src="bower_components/angular-resource/angular-resource.js"></script> в index.html, я пытался использовать ['ngResource'] в сервисе, но ничего не работает. Более того, если я добавлю ['ngResource'] я не получаю эту ошибку в консоли, но не отображается html из club.html (этот html только показывает элемент с сервера). Я имею в виду, что никакое представление не загружается. Я не знаю, почему моя служба не может вводить поставщика ресурсов здесь.

UPDATE: теперь я изменил свой сервис на:

angular.module('fronterApp')
  .service('ClubService', function (ClubResource) {

  var get = function () {
    return ClubResource.get({id: 1});
  };

  return {
    get: get
  };
});

и ресурс (но GET - это значение по умолчанию, поэтому я считаю, что это необязательно):

var app = angular.module('fronterApp');
var server = 'http://localhost:8080';
app.run(function ($http) {
  $http.defaults.headers.common['Content-Type'] = 'application/x-www-form-urlencoded';
  $http.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';
});
app.factory('ClubResource', function ($resource) {
  return $resource(server + '/api/clubs/:id', {id: '@id'}, {
    get: {
      method: 'GET'
    }
  });
});
Теги:
resources
rest

1 ответ

1
Лучший ответ

Хорошо, я уже решил эту проблему... Я глуп, потому что у меня есть фабрика в другом файле с именем routing.js

var app = angular.module('fronterApp');
var server = 'http://localhost:8080';

app.factory('ClubResource', ['$resource', function ($resource) {
  return $resource(server + '/api/clubs/:id', {id: '@_id'}, {
  });
}]);

и я не добавляю этот файл в index.html, поэтому я получил эту ошибку, потому что Angular не смог найти скрипт с необходимым кодом. Теперь все работает нормально.

  • 0
    Не могли бы вы пометить это как ответчик?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню