バックグラウンド
N 個の角度モジュールがあります。それらの 1 つは、ブートストラップされ、ページのライフサイクル全体に存在するルート コンテナーです。他のすべての N-1 は、ページ内にネストされたゲームであり、動的にロードおよびアンロードする必要があります ( Angularjs モジュールのアンロード方法)。
.------------------.
|Container |
| .----------. |
| |Game | |
| | | |
| | | |
| `----------` |
`------------------`
詳細
各ゲーム - いくつかの API インタラクションを実行するための依存関係のメイン コンテナーとしてある angular-module と同じ方法です。
例
いくつかの実験の後、Angularjs 1.1.5 のネストされたモジュールではほとんど (!)正しく動作することがわかりました: http://plnkr.co/edit/kJao7o
しかし、新しい Angularjs (1.2.0-rc2) では壊れています: http://plnkr.co/edit/ZyhbRu
なぜほぼ?
この例でも例外が発生します。
エラー: 引数 'GameCtrl' は関数ではありません。未定義です
AngularJS からの自動注入を防ぐためにng-includeを使用しようとしました。しかし、まだ同じ問題があります ( http://plnkr.co/edit/EM1MbB );
なにが問題ですか?
同じページでネストされた ng - アプリを使用することは不可能であることを知っています http://docs.angularjs.org/api/ng.directive:ngApp
どのように?
しかし、同じページで(独自のコントローラーを使用して)複数のネストされた角度モジュールを使用するにはどうすればよいでしょうか?
バグ?
そして、それが一時的なバグだったのか、Angularチームがネストされたモジュールを避けることにしたのかはわかりません。それについて何か知っている人はいますか?
悪いアイデア?
または、そのような問題にモジュールを使用するのが悪い考えである場合、そのための最良の決定は何ですか?
そのアプリでモジュールを使用する理由
- 名前のスコープの分離 (名前の衝突を避けるため)。2つ以上の将来のゲームのいずれも、同じctrls名などを使用しないことを保証できます。
- モジュールをアンロードします (AngularJs で可能かどうかはわかりませんが、試してみます)。