Angular - 从提供者中未知的提供者

3

我遇到了一个奇怪的问题,我的自定义提供程序在注入到应用程序中时出现了错误。

这是我的提供程序:

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

这是我的应用程序和配置块:

这是我的应用程序和配置块:

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
...

我遇到了以下错误:

Uncaught Error: [$injector:modulerr] 无法实例化模块1425App,原因是:Error: [$injector:unpr] 未知的提供程序:ODataProvider

这让我相信,这是将提供程序注入我的应用程序时出现的问题。你有任何想法吗?

1个回答

2
看到你提供的代码片段,问题可能是你在 oData 提供程序注册之前出现了配置块。尝试在 oDataProvider 注册之后设置配置块。
将配置块与应用程序注册分开,并在提供程序注册后加载它。您只能配置在使用它的特定配置块之前注册的提供程序。但是对于 constant 不是这种情况,您可以按任何顺序注册它们。
以上信息(这是一个错误)适用于 Angular 的 1.2.* 版本,在 1.3 中,您甚至可以在配置块之后注册提供程序。

@mlang 没问题,如果您升级到1.3 rc版本,就不会遇到这个问题了。 - PSL

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接