2015-11-28 3 views
1

Привет, у меня возникли проблемы с инъекцией зависимостей через службу инжектора $.
Я новичок в угловом, поэтому я объясню, как я вижу это с точки зрения контейнера IoC.

В первую очередь проблема: $ injector не может разрешить $ state.

core.js

(function() { 
    'use strict'; 
    angular.module('app.core',['ui.router']) 
     .config(function($stateProvider,$state){ 
      // ...... 
    }); 
}()); 

Здесь ошибка:

Uncaught Error: [$injector:modulerr] Failed to instantiate module app due  to: 
    Error: [$injector:modulerr] Failed to instantiate module app.core due to: 
    Error: [$injector:unpr] Unknown provider: $state 

Я не думаю, что трассировка стека имеет большого значения здесь ... но только в том случае, если я отправил это в нижней части вопроса:

Index.html: Я просто хотел показать, где и в каком порядке eference мои .js файлы.

<head> 
    .... <!-- pointing out that my .js are not here --> 
    </head> 
    <body> 

     <script src="bower_components/jquery/dist/jquery.js"></script> 
     <script src="bower_components/angular/angular.js"></script> 
     <script src="bower_components/angular-ui-router/release/angular-ui-router.js"></script> 

     <script src="components/core/lib/core.js"></script> 
     **<!-- relevant to the EDIT part below --> 
     <script src="components/something/something.js"></script>** 
    </body> 

Как я понимаю рецепт поставщика угловую'S:

$stateProvider is the service provider which registers $state service to the IoC($injector) and does so by exposing $get member which the IoC knows to treat in a special way. 

если был создан «$ stateProvider» и может придать сам по себе, как придет его не зарегистрировали «$ государственную» службу к IoC

EDIT: еще больше у меня есть еще один модуль, на котором нет проблемы с получением $ государственной службы в качестве зависимости.

something.js

(function() { 
    'use strict'; 
     angular.module('app.something',['ui.router']) 
      .config(function($stateProvider, $urlRouterProvider,$state) { 
      .... no problem receiving '$state' here 
     })  
}());  

EDIT 2: Мое плохое не работает в любой конфигурации VISHAL DAGA был прав.

Трассировка стеки:

http://errors.angularjs.org/1.4.8/$injector/unpr?p0=%24state 
    at http://localhost:9000/bower_components/angular/angular.js:68:12 
    at http://localhost:9000/bower_components/angular/angular.js:4334:19 
    at getService  (http://localhost:9000/bower_components/angular/angular.js:4482:39) 
    at Object.invoke (http://localhost:9000/bower_components/angular/angular.js:4514:13) 
    at runInvokeQueue (http://localhost:9000/bower_components/angular/angular.js:4429:35) 
    at http://localhost:9000/bower_components/angular/angular.js:4438:11 
    at forEach  (http://localhost:9000/bower_components/angular/angular.js:340:20) 
    at loadModules (http://localhost:9000/bower_components/angular/angular.js:4419:5) 
    at http://localhost:9000/bower_components/angular/angular.js:4436:40 
    at forEach  (http://localhost:9000/bower_components/angular/angular.js:340:20) 
http://errors.angularjs.org/1.4.8/$injector/modulerr?p0=app.core&p1=Error%3… 2F%2Flocalhost%3A9000%2Fbower_components%2Fangular%2Fangular.js%3A340%3A20) 
    at http://localhost:9000/bower_components/angular/angular.js:68:12 
    at http://localhost:9000/bower_components/angular/angular.js:4458:15 
    at forEach (http://localhost:9000/bower_components/angular/angular.js:340:20) 
     at loadModules (http://localhost:9000/bower_components/angular/angular.js:4419:5) 
    at http://localhost:9000/bower_components/angular/angular.js:4436:40 
    at forEach (http://localhost:9000/bower_components/angular/angular.js:340:20) 
    at loadModules (http://localhost:9000/bower_components/angular/angular.js:4419:5) 
     at createInjector (http://localhost:9000/bower_components/angular/angular.js:4344:11) 
     at doBootstrap (http://localhost:9000/bower_components/angular/angular.js:1676:20) 
     at bootstrap (http://localhost:9000/bower_components/angular/angular.js:1697:12) 
    http://errors.angularjs.org/1.4.8/$injector/modulerr?p0=app&p1=Error%3A%20%…F%2Flocalhost%3A9000%2Fbower_components%2Fangular%2Fangular.js%3A1697%3A12) 
+0

согласно документации угла, либо $ state не определено или не указано правильно. см. это, если это помогает - https://docs.angularjs.org/error/$injector/unpr –

+1

https://scotch.io/tutorials/angular-routing-using-ui-router –

ответ

5

На этапе конфигурации, весь его поставщик, так инъекционная $ stateProvider является правильной, но не $ состояния.

Удалите $ state, и проблема исчезнет.

+0

Я знаю, что это все проблема , У меня был еще один модуль с этапом конфигурации позже, на котором не было проблем с получением $ state в качестве зависимости –

+0

см. Часть EDIT моего вопроса –

+0

angular.config принимает только Providers, $ state является экземпляром $ stateProvider. –

0

Я думаю, что вы смешиваете $state с $stateProvider.state. См. Ниже для правильного использования

(function() { 
    'use strict'; 
    angular.module('app.core',['ui.router']) 
     .config(function($stateProvider){ 
      $stateProvider 
      .state('default', {.... 
    }); 
}()); 
+0

нет ... нет я нет .. спасибо. –

Смежные вопросы