AngularJS中的嵌套模块
the Nested Modules in AngularJS
Background
我有 N 个角度模块。其中之一是引导并存在于整个页面生命周期的根容器。所有其他 N-1 都是嵌套在页面内部的游戏,也需要动态加载和卸载(如何卸载 angularjs 模块)。
.------------------.
|Container |
| .----------. |
| |Game | |
| | | |
| | | |
| `----------` |
`------------------`
详
每个游戏 - 都是相同的角度模块,它作为依赖主容器进行一些 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 中是否可以 - 但我会尝试);
哦!我刚刚意识到你的想法。实际上,您对Angular建筑组件的理解不正确。
- Angular 模块只是控制器、指令、工厂等的逻辑包装器。例如,您将有模块"main"和几个子模块"模块A"和"模块B"
它们与标记上的模块没有任何关系,它只是应用中的一个逻辑单元。
- 在您的示例中,您希望是指范围。你的应用中可能有多个范围,它们可以是租用的,也可以是有孩子的。在这种情况下,您可以加载或卸载创建范围的实体
有关更多详细信息,请查看官方开发人员指南。
相关文章:
- 用嵌套函数和默认函数定义函数
- 如何在ReactJS JSX中执行嵌套的if-else语句
- 可以简化嵌套的延迟Q Promises解析吗
- 用于搜索的聚合物嵌套绑定
- 在嵌套组件中使用 react 组件时模块中断
- 从节点模块内部返回嵌套函数
- 模拟 Node.js 中的嵌套模块
- AngularJS中的嵌套模块
- 如何嵌套 React 组件/模块以分离 UI
- 避免在ES6 JavaScript web项目中进行深度嵌套模块导入
- 如何需要深度嵌套的NodeJS模块
- Javascript模块模式:在嵌套函数中调用函数
- Javascript模块扩展嵌套对象
- 如何在嵌套的IIFE模块中引用父JavaScript函数
- 如何从嵌套模块导入
- AngularJS中的嵌套模块
- 如何在模块化设计模式中嵌套函数
- 将嵌套模块与require.js优化器结合起来
- “this”在嵌套异步模块函数中如何正常表现
- 引用嵌套的TypeScript模块