Angularjs模块依赖循环

Hen*_*Tao 3 javascript dependency-injection module angularjs

我很好奇,在这种情况下仍然无法解释依赖循环(传递).

angular.module('mainApp', ['addon.dashboard']).factory('Test', function(){
    return {
        hello: 'moto'
    };
});
angular.module('addon.dashboard', ['mainApp']).controller('Demo', function(Test){
    console.log(Test.hello);
});
Run Code Online (Sandbox Code Playgroud)

这是我的应用程序中的示例代码.该mainApp模块需要注入addon.dashboard模块.否则,addon.dashboard模块需要注入mainApp模块.我们可以看到它可能在这里循环.但它适用于我的应用程序.控制器Demo实际输出moto到控制台.

角度如何处理循环注入?

raj*_*aur 5

您可能希望查看角度代码(尤其是loadModules方法).基本上有一个包含所有加载模块的HashMap.如果它不在HashMap中,则将其置于其中,然后继续初始化模块的其余部分.如果它已经在集合中,它将立即返回.

所以,在你的情况下,让我们说mainApp首先被加载.它将它放入loadedModules并找到它的依赖项.当它找到addon.dashboard时,它发现mainApp是一个依赖项,但它已经存在于loadedModules中,所以它立即返回.

如果断点到angular.js的"loadModules"方法,它会好很多