Angularjs模块依赖循环

时间:2014-03-21 04:04:43

标签: javascript angularjs dependency-injection module

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

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

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

角度如何处理循环注入?

1 个答案:

答案 0 :(得分:5)

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

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

如果断点为angular.js的“loadModules”方法,它会好很多。