2015-03-25 3 views
0

Я настроил отдельный модуль, чтобы содержать службу api, и я пытаюсь ввести его в конфигурацию маршрутизации. Но я получаю вышеуказанную ошибку. Вот соответствующий код:

/*********** 
* app module 
************/ 

(function(){ 

    'use strict'; 

    angular 
     .module('app', [ 

      /*************** 
      * Vendor modules 
      ****************/ 
      'ui.router', 
      'ngCookies', 
      'ngSanitize', 

      /*************** 
      * Custom modules 
      ****************/ 
      'app.auth', 
      'app.debates', 
      'app.api' 

     ]); 
})(); 

/*********** 
* api module 
************/ 

(function(){ 

    'use strict'; 

    angular 
     .module('app.api', []); 

})(); 


/************ 
* api service 
************/ 

(function(){ 

    'use strict'; 

    angular 
     .module('app.api') 
     .constant('API_BASE_URL', 'http://localhost:8000/api/') 
     .service('Api', Api); 

     Api.$inject = ['$http', 'API_BASE_URL']; 

     function Api($http, API_BASE_URL){ 

      var service = { 
       getDebates:    getDebates 
      }; 

      return service; 


      /* ******************************** 
      * Method: getDebates 
      ******************************** */ 
      function getDebates() { 

       var request = { 
        method: 'GET', 
        url: API_BASE_URL + 'debates', 
        headers: { 
         'Content-Type':  'application/json', 
         'Accept':   'application/json' 
        } 
       }; 

       return $http(request); 
      } 

     } // function Api 
})(); 

Тогда в моей конфигурации трассы на главном app модуле, я потянув в службе Api для того, чтобы использовать его в методах РАЗРЕШИТЬ каждое государство:

(function(){ 

    'use strict'; 

    angular 
     .module('app') 
     .config(routes); 

     routes.$inject = ['$stateProvider', '$urlRouterProvider', '$locationProvider', '$httpProvider', 'Api']; 

     function routes($stateProvider, $urlRouterProvider, $locationProvider, $httpProvider, Api) { 

Я уверен, что есть что-то простое, что я пропустил, но я не могу его найти.

+0

Действительно ли в модуле 'app.api' есть сервис под названием' Api'? Это не показано выше. ** Редактировать: ** также заметили, что это находится в разделе 'config' - вы Калифорния n используйте только «провайдеры» в конфигурации, поскольку он выполняется до фазы начальной загрузки приложения. Является ли 'api'' службой', 'фабрикой' или' провайдером'? – Tom

+0

Да, это находится под конфигурацией модуля 'app.api'. – babbaggeii

+1

А, это услуга. – babbaggeii

ответ

0

Угловые config секции могут принимать только провайдеры и константы (в вашем случае, вы используете service.

Из Angular Docs

  1. Configuration blocks - get executed during the provider registrations and configuration phase. Only providers and constants can be injected into configuration blocks. This is to prevent accidental instantiation of services before they have been fully configured.

Вы можете конвертировать ваши услуги поставщику see here или впрыснуть ваш сервис каким-то другим способом.

Смежные вопросы