我很好奇,在这种情况下仍无法解释依赖循环(传递)。
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
输出到控制台。
角度如何处理循环注入?
答案 0 :(得分:5)
您可能需要查看角度代码(尤其是loadModules方法)。基本上有一个包含所有加载模块的HashMap。如果它不在HashMap中,则将其置于其中,然后继续初始化模块的其余部分。如果它已经在集合中,它将立即返回。
所以,在你的情况下,让我们说首先加载mainApp。它将它放入loadedModules并找到它的依赖项。当它找到addon.dashboard时,它发现mainApp是一个依赖项,但它已经存在于loadedModules中,所以它立即返回。
如果断点为angular.js的“loadModules”方法,它会好很多。