背景
我有 N 个角度模块。其中之一是引导并存在整个页面生命周期的根容器。所有其他 N-1 都是嵌套在页面内的游戏,也需要动态加载和卸载(如何卸载 angularjs 模块)。
.------------------.
|Container |
| .----------. |
| |Game | |
| | | |
| | | |
| `----------` |
`------------------`
细节
每个游戏 - 与 angular-module 的方式相同,它作为依赖项主容器进行一些 API 交互。
例子
经过一些实验,我发现在 Angularjs 1.1.5 中嵌套模块几乎(!)工作正常: http ://plnkr.co/edit/kJao7o
但是新的 Angularjs (1.2.0-rc2) 坏了:http: //plnkr.co/edit/ZyhbRu
为什么几乎?
此示例仍然引发异常:
错误:参数“GameCtrl”不是函数,未定义
我尝试使用ng-include来防止来自 AngularJS 的自动注入。但仍然有同样的问题(http://plnkr.co/edit/EM1MbB);
怎么了?
我知道不可能在同一页面上使用嵌套的 ng - 应用程序 http://docs.angularjs.org/api/ng.directive:ngApp
如何?
但是如何在同一页面上使用多个嵌套的角度模块(带有自己的控制器)?
漏洞?
而且我不知道这只是暂时的错误还是 Angular 团队决定避免使用嵌套模块。有人知道吗?
馊主意?
或者,如果针对此类问题使用模块是个坏主意 - 最好的决定是什么?
在该应用程序中使用模块的原因
- 隔离名称范围(避免名称冲突)。我可以保证两个或更多未来游戏中的任何一个都不会使用相同的 ctrls 名称或其他东西;
- 卸载模块(我不知道在 AngularJs 中是否可能 - 但我会尝试);