2016-12-19 3 views
1

私はコンフィグレーションのangularJSに$ rootScopeを挿入するのに問題がありますが、これは私のコードですが、まだエラーです。 。

ありがとうございました。

(function() { 
    'use strict'; 

    angular 
    .module('uliappApp') 
    .directive('angular-loading-bar', ['cfpLoadingBarProvider']) 
    .config(cfpLoadingBarProvider); 

    cfpLoadingBarProvider.$inject = ['cfpLoadingBarProvider', '$rootScope']; 

    function cfpLoadingBarProvider(cfpLoadingBarProvider, $rootScope) { 
    cfpLoadingBarProvider.includeBackdrop = true; 
    console.log(rootScope.concessionLoadingScreen); 
    cfpLoadingBarProvider.spinnerTemplate = '<div class="loading-bar-container">' 
     + '<div id="loading-bar-spinner"><div class="spinner-icon"></div></div></div>'; 
    } 
})(); 
+0

設定フェーズで 'rootScope'が必要なのはなぜですか?私はあなたがそれを行うことができるとは思わない – Satpal

+0

私は、変数$ rootScope.concessionLoadingScreenの値を他のコントローラから作成条件から取りたいと思っています。あなたは私のためのヒントを与えることができるかもしれません.. @ – johnHarry

答えて

5

あなたは、それは単に.run()を使用することによって達成することができ、構成フェーズでrootScopeを必要としません。

angular 
    .module('uliappApp') 
    .run(['$rootScope', function($rootScope){ 
     $rootScope.concessionLoadingScreen = true; 
    }]) 
+0

なぜ私のconsole.log($ rootScope.concessionLoadingScreen)は未定義です。 ? @satpal – johnHarry

+0

@johnHarry、コードのその部分がコメントされました – Satpal

1

角度アプリケーションの設定フェーズでは$rootScopeを使用できません。

constantおよびproviderのみをコンフィギュレーションフェーズに注入できます。

runフェーズを使用するか、希望の構成を保持するprovider(実際はサービス)を作成できます。

// Option 1 - during run 
angular 
    .module('yourApp') 
    .run(['$rootScope', function($rootScope) { 
    }]) 

// Option 2 - provider 
angular 
    .module('yourApp') 
    .provider('yourSettings', function() { 
     var $this = this; 

     this.yourSettings = 'yourValue'; 

     this.$get = function() { 
      return $this; 
     } 
    }) 
angular 
    .module('yourApp') 
    .config(['yourSettingsProvider', function(yourSettingsProvider) { 
     // You can use yourSettingsProvider.yourSettings 
    }]) 
0

設定フェーズでは、プロバイダのみが注入できます。

まず、angularjsは最初にconfigメソッドを呼び出してから、runメソッドを呼び出します。設定中にプロバイダのみが利用可能です。プロバイダを使用してサービスインスタンスを作成できます。 .runを使用して$rootScopeを注入することができます。例えば

、以下は許可されていません:あなたはへのアクセス権を持って何

myMod.config(function(greeting) { 
    // WON'T WORK -- greeting is an *instance* of a service. 
    // Only providers for services can be injected in config blocks. 
}); 

は、あなたが作ったサービスのための任意のプロバイダです:

myMod.config(function(greetingProvider) { 
    // ok fine! 
}); 

すべてのベスト。

関連する問題