我可以动态地将一个模块注入另一个模块吗?
Can I dynamically inject a module into another module?
假设我在两个独立的文件中有两个模块:
第一个适用于所有人,命名为myApp:
var myApp = angular.module('myApp', ['dependency.one', 'dependency.one']);
在另一个文件:admin.js
中,我有另一个模块来管理管理功能。
var myAdmin = angular.module('myAdmin', ['dependency.three', 'dependency.four']);
只有admin用户才能使用admin.js。
是否可以从admin.js
文件内注入myAdmin模块到myApp模块?或者,是否有一些方法包括所有的myAdmin的东西,但只有当admin.js文件链接在页头,或一些替代的解决方案,我没有看到?
不,在当前(1.x)版本的AngularJS中没有。当应用程序启动时,需要为其提供在应用程序中使用的全套模块。因此,您需要重新引导整个应用程序以考虑额外的模块。
为了将来的搜索者的利益,我自己回答这个问题。
模块的.required属性保存了依赖项。
在这个admin.js文件中,我可以简单地写:
var myAdmin = angular.module('myAdmin', ['dependency.three', 'dependency.four']);
myApp.requires.push('myAdmin');
和myApp现在将接收myAdmin。
模块必须在引导之前配置,所以你不能在运行时插入额外的依赖项。
相关文章:
- Javascript,访问一个主要对象模块模式中的每个对象
- 错误:$injector:modulerr模块错误(我的第一个SPA应用程序)
- 如何定义一个模块并使用它来分离js文件
- 聚合物是一个框架而不是一个库.如何模块化地使用web组件
- 需要从一个文件中获取多个模块
- 在一个表达式中加载并使用ES6模块
- 在我的JavaScript模块中绑定一个点击事件
- ESDoc将我所有的模块方法放在一个标题下,而不是放在每个文件下,我该如何改变这种行为
- 从一个模块暴露到另一个模块
- 查找与锁定和更新调度相关的一个或两个节点模块
- NodeJS:一个全局EventEmitter或每个模块它'他自己的
- 如何将多个 AMD 模块捆绑在一个文件中
- 节点模块对象范围:在所有函数之间共享一个对象
- 从导出的模块返回变量,并在另一个文件(NodeJS)中使用它
- 在节点中.js“模块”始终是一个对象
- 在单独的模块中放入一个脚本
- Node.js创建一个模块来收集内存(ram)信息
- 如何从另一个模块调用函数
- 无法调用requirejs中的另一个模块
- 无法导入模块:您可能需要一个合适的加载程序