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

时间:2014-06-02 13:22:52

标签: javascript angularjs

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

第一个适合所有人,称之为myApp:

var myApp = angular.module('myApp', ['dependency.one', 'dependency.one']);

在另一个文件中:admin.js我有另一个管理管理功能的模块。

var myAdmin = angular.module('myAdmin', ['dependency.three', 'dependency.four']);

只有登录的管理员用户才能使用admin.js。

是否可以从admin.js文件中将myAdmin模块注入myApp模块?或者,有没有办法包含所有myAdmin的东西,但只有在页眉中链接了admin.js文件,或者我没有看到一些替代解决方案? $ inject似乎在这种情况下不起作用。

2 个答案:

答案 0 :(得分:1)

不,不在AngularJS的当前(1.x)版本中。当应用程序启动时,需要提供要在应用程序中使用的完整模块集。因此,您可以重新引导整个应用程序以考虑其他模块。

答案 1 :(得分:0)

我为了未来的搜索者的利益而自己回答这个问题。

模块的.required属性包含依赖项。您可以通过推送到此属性来要求其他模块。

在这个admin.js文件中,我只想写:

var myAdmin = angular.module('myAdmin', ['dependency.three', 'dependency.four']);
myApp.requires.push('myAdmin');

myApp现在将收到myAdmin。

模块必须在引导之前进行配置,因此您无法在运行时插入其他依赖项。在应用程序引导之前必须包含它们。