Javascript Angularjs模块依赖循环

Javascript Angularjs模块依赖循环,javascript,angularjs,dependency-injection,module,Javascript,Angularjs,Dependency Injection,Module,我很好奇,仍然无法解释这种情况下的依赖循环(passed) angular.module('mainApp', ['addon.dashboard']).factory('Test', function(){ return { hello: 'moto' }; }); angular.module('addon.dashboard', ['mainApp']).controller('Demo', function(Test){ console.log(T

我很好奇,仍然无法解释这种情况下的依赖循环(passed)

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
模块。 我们可以看到它可能在这里循环。但它在我的应用程序中起作用。控制器演示实际将
moto
输出到控制台


angular是如何处理这样的循环注入的

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

因此,在您的情况下,让我们假设mainApp首先被加载。它将其放入loadedModules中,然后查找其依赖项。当它找到addon.dashboard时,它会发现mainApp是一个依赖项,但它已经存在于loadedModules中,因此它会立即返回

如果您将断点插入angular.js的“loadModules”方法,效果会更好