2014-10-10 90 views
3

我有一个奇怪的问题,那就是我的提供程序不能正确注入到我的应用程序中。Angular - 来自提供商的未知提供程序

这是我的供应商:

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] Failed to instantiate module 1425App due to: Error: [$injector:unpr] Unknown provider: ODataProvider

这导致我相信,它将提供者注入到我的应用程序中是一个问题。任何想法什么我想念?

回答

2

看着你粘贴片断的问题可能是你以前oData提供商已经注册配置块出现。尝试在oDataProvider注册后设置配置块。从应用注册

分离出配置块和您提供商(S)后装载它已经登记。您只能配置在使用它的特定配置块之前注册的提供程序。 constant的情况并非如此,但您可以按任意顺序注册。

的上述信息(这是一个错误)是1.2。*的角度的版本,与1.3甚至可以配置块后注册商。

+0

这实际上工作。非常感谢! – mlang 2014-10-10 20:21:06

+0

@mlang不客气。如果你升级到1.3 RC,你不应该面对这个问题。 – PSL 2014-10-10 20:23:47