如何确保角度模块依赖性得到解决?

铝河

Angular的模块文档(http://docs-angularjs-org-dev.appspot.com/guide/module)说:

依存关系

模块可以列出其他模块作为它们的依存关系。取决于模块意味着需要在加载需求模块之前先加载需求模块。换句话说,所需模块的配置块在配置块或需求模块之前执行。运行块也是如此。每个模块只能加载一次,即使需要多个其他模块也是如此。

我创建了这个示例(http://jsbin.com/IRogUxA/34/edit),该示例创建了一个控制器模块,该模块依赖于两个“中级”模块,每个模块都依赖于两个“低级”模块。因此,我有两个“中级”模块和四个“低级”模块。

显然,在JS源代码中顺序无关紧要。在上面的示例中,我先定义了高级模块,然后又引用了高级模块。我知道Angular利用依赖注入来连接依赖关系,但是它的方式对我来说是个谜。

我的问题:如何确保各个模块的配置块以正确的顺序运行?或更广泛地说,当以我选择的任何顺序(在JS源代码中)定义它们时,Angular如何解决我的所有依赖关系?

TJWorks

所有的角度模块API方法(例如“ config”,“ factory”等)都包装在“ invokeLater”函数中。换句话说,当评估依赖模块时,此时并不会真正调用module.config,module.factory等。而是将这些调用简单地推入队列。

考虑以下示例:

    var demo = angular.module('demo', ['module1']);
demo.config( function( ) {
            console.log("In app.config")
} ).run(function(){
    console.log("Angular run");
});

angular.module("module1", []).factory('myservice', function(){
    return {};
}).controller('mycontroller', function(){} );

对于每个模块,它都有自己的队列:(对于主模块“ demo”)

var invokeQueue = [];
invokeQueue.push("demo.config", xxx);
invokeQueue.push("demo.run", xxx);

对于模块1:

var invokeQueue = [];
invokeQueue.push("module.factory", xxx);
invokeQueue.push("module.controller", xxx);

一旦加载了所有脚本并触发了DOMContentLoaded事件,Angular实际上就会加载/评估所有模块。此时,角度已经构建了完整的模块依赖树。依赖模块总是在主模块之前首先被加载,因此在这种情况下,module1将首先被加载,并且它的invokeQueue以原始顺序(module.factory,module.controller等)被调用。然后回到主模块演示的invokeQueue,demo.config,demo.run

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在继续之前,如何确保我对 postgres 的承诺得到解决?

来自分类Dev

模块之间的角度依赖性

来自分类Dev

解决正交模块的依赖性

来自分类Dev

如何检查代码以确保内核之间的模块依赖性-Linux Kernel?

来自分类Dev

角度依赖性

来自分类Dev

如何解决转速依赖性

来自分类Dev

解决代码中模块之间的相互依赖性

来自分类Dev

无法解决对本地模块的依赖性

来自分类Dev

Haskell-解决循环模块依赖性

来自分类Dev

解决代码中模块之间的相互依赖性

来自分类Dev

解决Webpack中的外部子模块依赖性

来自分类Dev

如何确保稳定版本满足依赖性

来自分类Dev

如何判断诺言是否得到解决?

来自分类Dev

如何等待诺言得到解决

来自分类Dev

导入模块时如何避免导入模块依赖性?

来自分类Dev

注入角度依赖性?

来自分类Dev

注入角度依赖性?

来自分类Dev

无法解决依赖性

来自分类Dev

解决厨师依赖性

来自分类Dev

解决盐粒的依赖性

来自分类Dev

解决冲突的依赖性

来自分类Dev

Angular模块依赖性

来自分类Dev

Angular模块依赖性

来自分类Dev

Maven 依赖项未在 Intellij 中得到解决

来自分类Dev

Gradle:如何忽略无法解决特定依赖性的失败

来自分类Dev

如何解决指针数组中的数据依赖性?

来自分类Dev

如何解决VLC的依赖性“ vlc-nox”?

来自分类Dev

如何解决包裹问题/依赖性

来自分类Dev

sbt 插件 - 如何确保我的设置密钥在其他一切之前得到解决?