2014-10-10 2 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 
... 

Im получаю следующее сообщение об ошибке:

Uncaught Error: [$injector:modulerr] Failed to instantiate module 1425App due to: Error: [$injector:unpr] Unknown provider: ODataProvider

Это приводит к моему полагают, что его проблема с инъекцией поставщика в мое приложение. Любая идея, что им не хватает?

ответ

2

Глядя на то, что вы вставили проблему с фрагментами, может быть, что у вас есть блок конфигурации, появляющийся до того, как был зарегистрирован провайдер oData. Попробуйте настроить блок конфигурации после регистрации oDataProvider.

Отделите конфигурационный блок от регистрации приложения и загрузите его после регистрации вашего провайдера (ов). Вы можете настроить поставщиков, которые зарегистрированы до определенного блока конфигурации, который его использует. Это не относится к constant, хотя вы можете зарегистрировать их в любом порядке.

Приведенная выше информация (которая была ошибкой) имеет версию 1.2. * С угловым разрешением, с 1.3 вы можете зарегистрировать поставщиков даже после блока конфигурации.

+0

Это действительно сработало. Спасибо огромное! – mlang

+0

@mlang Добро пожаловать. Если вы обновляетесь до 1.3 rc, вам не стоит сталкиваться с этой проблемой. – PSL