2017-06-28 12 views
1

私はangularjs ui-routeプロジェクトで働いています。 in .run() core clientid$rootScopeという名前の変数を入れました。パラメータを.runから.configに渡す方法

ある時点では、.config()コアに格納された変数を使用する必要があります。

私は$rootScopeサービスを.config()コアに使用できないことを知っています。

私の質問は、の変数を$rootScopeから.config()に渡す方法です。他のサービスを使用できますか?

+0

は、あなたはポストのためhttps://stackoverflow.com/questions/15937267/inject-service-in-app-config –

答えて

3

もちろん、$ rootScopeを使用すると間違った決定になります。だれも地球規模の範囲を汚染することを好まないので、他の理由もあります。あなたが設定相からこの値をオーバーライドすることができますがあなたは、など

angular.module('mainModule').constant('settings', { 
    clientId: 1123 //some inital value 
}) 

settingsと呼ばれる定数を作成することを検討し、あなたが.runブロック、config相、serviceproviderのように任意の角度成分に必要な場所でそれを利用することができます。

angular.module('mainModule').config(['settings', configFn]) 

function configFn(settings){ 
    //routes registers here 

    //other awesome stuf 

    //set clientId here 
    //Assuming your clientId will be available, no async operation. 
    if(someValue === 1) 
     settings.clientId = 'asd12'; 
    else 
     settings.clientId = 'asd34'; 
} 

その後、あなたのrunブロック

angular.module('mainModule').run(['settings', runBlock]) 

function runBlock(settings){ 
    console.log(settings); 
} 

の内側にその定数を使用することができます。constantは選択の背後にある理由、この味は、任意の角度成分で注射用として利用することができます。あなたがサービスを書いている方法によって異なり

+0

パンカジおかげ詳細は、この答えを確認することができます。アプリモジュールはメインモジュールですか? – Michael

+0

@Michael yupe .. 'config'と' run'ブログは、アプリケーションがブートストラップされる前に何かを設定し初期化するためにメインモジュールに適用されるべきです。 –

+0

Pankaj、実行コアで定数を使用できますか? – Michael

関連する問題