Я создаю угловое приложение, использующее эшафот от 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'
}
});
});
Хорошо, я уже решил эту проблему... Я глуп, потому что у меня есть фабрика в другом файле с именем 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 не смог найти скрипт с необходимым кодом. Теперь все работает нормально.