2

こんにちは、$injector サービスを介した依存性注入で問題が発生しています。
私はAngularが初めてなので、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 : .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>

angularのプロバイダーレシピを理解しているように:

$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」が作成され、それ自体で注入できる場合、「$state」サービスを IoC に登録しなかったのはなぜですか

編集:さらに、依存関係として $state サービスを受け取ることに問題のない別のモジュールが後であります。

何か.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)
4

2 に答える 2

6

構成段階では、そのすべてのプロバイダーであるため、$stateProvider の注入は正しいですが、$state ではありません。

$state を削除すると、問題は解決します。

于 2015-11-28T10:41:46.183 に答える
0

$stateと混ざっていると思います$stateProvider.state。正しい使い方については以下を参照してください

(function() {
    'use strict';
     angular.module('app.core',['ui.router'])
         .config(function($stateProvider){
           $stateProvider
            .state('default', {....
     });
}());
于 2015-11-28T10:45:10.740 に答える