2017-08-02 6 views
3

私はいくつかの定義されたモジュールを持っています。私はそれらをすべて私のアプリケーションにロードしたくありません。代わりに、私は設定ファイルに基づいてそれらをロードしたい。angularJSの設定ファイルに基づいてモジュールをロードする方法

angular.module('section1', []) 

モジュール2:例

Module1のためのモジュールのそれぞれにおいて

angular.module('section2', []) 

、それは独自のHTMLテンプレートやビジネスロジックを持つことになります。次に、app.module.jsで:

angular.module('app', ['module1', 'module2']); 

module1とmodule2の両方が一緒に読み込まれます。私はそれが、代わりに、私は設定ファイルを持っていますハードコードにしたくない、何かのようには:

[{'module1': true}, {'module2':false}] 

最終的には、アプリが起動されるたびに、私は、設定ファイルを読み込んで意志をどのモジュール決めますロードされるモジュールとロードされないモジュール。上の例では、module1はロードされ、module2はロードされません。

どうすればいいですか?

答えて

1

manually bootstrap angle jsアプリケーションでも可能です。条件を追加し、ロードするモジュールを決定するのに役立ちます

ここでは手動でブートストラップする方法を説明します。

angular.element(function() { 
    if(/* condition */ { 
    angular.bootstrap(document, ['module1']); 
    } else { 
    angular.bootstrap(document, ['module2']); 
    } 
}); 
+0

これは実際に行ったことがありますか?私は、ユーザープロファイルがアクセスできる役割に適用されるモジュールのみを読み込むことに非常に興味があります。 Angularの観点からこれ以上のことはありますか? (もちろん、プロファイルに基づいてモジュールの配列を生成する方法については、詳細を記入することができます)。あなたが提供できるサンプルがありますか?非常に感謝するだろう! – flyer

+1

https://docs.angularjs.org/guide/bootstrap - 詳細はこちらをご覧ください。 –

+0

ありがとうございます。私はng-appのソースをチェックアウトし、それを使ってデバッグしました。これは私の使用事例にとってかなり基本的なものです。実際にはあなたのものに似ているこれらの2つの行に現れます(configは{strictDi:true}になります) config.strictDi = getNgAttribute(appElement、 'strict-di')!== null; ブートストラップ(appElement、module?[module]:[]、config); – flyer

1

角度モジュールを定義して変数を渡す前に、モジュール依存配列を作成できます。設定ファイルとそのロード方法を完全に制御できれば、設定ファイルは単純に依存関係の配列になります。同様に:

var config = ['module1', 'module2']; 
angular.module('app', config); 

これは、複数の設定ファイルがあり、その特定のコンテキストに必要なファイルを読み込むことを前提としています。

あなたは、単一のファイル内のすべてのモジュールの依存関係の設定をしたい場合、あなたはこのようにそれをフォーマットすることができます:アンギュラアプリケーションが定義され(したがってブートストラップ)される前に、それが構成されていますので

var config = { 
    'profileA': [ 'module1' ], 
    'profileB': [ 'module2' ] 
}; 
var currentProfile = 'profileA'; 
angular.module('app', config[currentProfile]); 

、角度wouldn」あなたのモジュールの依存関係がどこから来たのかを調べてください。実際のモジュールの.jsファイルがロードされている限り。あなたはブラウザをリフレッシュせずにプロファイルを変更することはできません。

関連する問題