简体   繁体   English

Angular - 来自提供商的未知提供商

[英]Angular - Unknown Provider from Provider

I have the strange issue, that somehow my own provider is not injecting correctly into my app. 我有一个奇怪的问题,不知何故我自己的提供商没有正确注入我的应用程序。

This is my provider: 这是我的提供者:

    angular.module '1425App'
    .provider 'OData',[() ->
      @_baseUrl = ''
      return {
        setBaseUrl: (value) ->
          @_baseUrl = value
          return
        $get: ['$http', '$q', ($http, $q) ->
          return {
          getAll: (resource) ->
            dfd = $q.defer()
            $http.get("#{@_baseUrl}/#{resource}").success (res) ->
              console.log res
              dfd.resolve()
              return
            return dfd.promise
          }
        ]
      }
    ]

This is my app + config block: 这是我的app +配置块:

angular.module('1425App', [
  'ngCookies',
  'ngResource',
  'ngSanitize',
  'ui.router',
  'angular-loading-bar',
  'ngAnimate',
  'toaster',
  'ui.gravatar',
  'ngFitText',
  'google-maps',
  'mm.foundation',
  'restangular',
  'ui.select2',
  'ngTable',
  'ngGrid',
  'ngCsv',
  'ui.date',
  'ngDragDrop',
  'ui.sortable'
])
.config ($stateProvider, $urlRouterProvider, $locationProvider, $httpProvider, cfpLoadingBarProvider, baseUrl, ODataProvider) ->
  $httpProvider.interceptors.push('httpInterceptor')

  ODataProvider.setBaseUrl(baseUrl + '/odata/')
  cfpLoadingBarProvider.includeSpinner = false
...

Im getting following error: 我得到以下错误:

Uncaught Error: [$injector:modulerr] Failed to instantiate module 1425App due to: Error: [$injector:unpr] Unknown provider: ODataProvider 未捕获错误:[$ injector:modulerr]由于以下原因无法实例化模块1425App:错误:[$ injector:unpr]未知提供者:ODataProvider

This leads to my believe, that its an issue with injecting the provider into my app. 这导致我相信,这是将提供程序注入我的应用程序的问题。 Any idea what im missing? 知道我缺少什么吗?

Looking at you pasted snippet issue could be that you have config block appearing before oData provider has been registered. 查看粘贴的代码片段问题可能是您在oData提供程序注册之前出现了配置块。 Try setting up the config block after the oDataProvider registration. 尝试在oDataProvider注册后设置配置块。

Separate out config block from app registration and load it after your provider(s) have been registered. 从应用程序注册中分离出配置块,并在您的提供商注册后加载它。 You can only configure the providers that are registered before the specific config block that uses it. 您只能配置在使用它的特定配置块之前注册的提供程序。 This is not the case with constant though you can have them registered in any order. 这是不符合的情况下constant ,虽然你可以让他们以任何顺序登记。

The above information (which was a bug) is as of 1.2.* version of angular, with 1.3 you can register providers even after the config block. 以上信息(这是一个错误)是1.2。*版本的角度,1.3即使在配置块后你也可以注册提供者。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM