我可以动态地将一个模块注入另一个模块吗?

Can I dynamically inject a module into another module?

本文关键字:模块 一个 注入 另一个 动态 我可以      更新时间:2023-09-26

假设我在两个独立的文件中有两个模块:

第一个适用于所有人,命名为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。

模块必须在引导之前配置,所以你不能在运行时插入额外的依赖项。