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

时间:2014-10-10 20:10:45

标签: javascript angularjs coffeescript angularjs-service

我有一个奇怪的问题,不知何故我自己的提供商没有正确地注入我的应用程序。

这是我的提供者:

    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
          }
        ]
      }
    ]

这是我的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
...

我收到以下错误:

  

未捕获错误:[$ injector:modulerr]无法实例化模块   1425App由于:错误:[$ injector:unpr]未知提供商:   ODataProvider

这导致我相信,这是将提供程序注入我的应用程序的问题。知道我遗失了什么吗?

1 个答案:

答案 0 :(得分:2)

查看粘贴的代码段问题可能是您在oData提供程序注册之前出现了配置块。尝试在oDataProvider注册后设置配置块。

从app注册中分离出配置块,并在您的提供商注册后加载它。您只能配置在使用它的特定配置块之前注册的提供程序。虽然您可以按任何顺序注册它们,但constant不是这种情况。

以上信息(这是一个错误)是1.2。*版本的角度,1.3即使在配置块后也可以注册提供者。

相关问题