12

バックグラウンド

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 で可能かどうかはわかりませんが、試してみます)。
4

1 に答える 1

2

おー!私はあなたの考えに気づきました。実際、あなたは Angular の構築コンポーネントについて正しく理解していません。

  1. Angular モジュールは、コントローラー、ディレクティブ、ファクトリなどの単なる論理ラッパーです。たとえば、モジュール 'main' といくつかのサブモジュール 'moduleA' および 'moduleB' があります。

マークアップのモジュールとは何の関係もありません。アプリ内の単なる論理ユニットです。

  1. あなたの例では、スコープを意味することを願っています。アプリには複数のスコープがあり、継承したり、子を持つことができます。この場合、スコープを作成したエンティティをロードまたはアンロードできます

詳細については、公式の開発者ガイドをご覧ください。

于 2013-10-30T22:16:50.803 に答える