错误:$ injector:unpr未知提供商 - 未知提供商:Api

时间:2015-03-25 15:05:32

标签: angularjs

我已经设置了一个单独的模块来包含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) {

我确定我错过了一些简单的事情,但我无法找到它。

1 个答案:

答案 0 :(得分:0)

Angular config部分只能使用提供者和常量(在您的情况下,您使用的是service

来自Angular Docs

  
      
  1. 配置块 - 在提供商注册和配置阶段执行。只有提供程序和常量才能注入配置块。这是为了防止在完全配置服务之前意外实例化服务。
  2.   

您可以将服务转换为提供商see here或以其他方式注入您的服务。