我阅读了AngualrJS的文件:https://docs.angularjs.org/guide/component
当我阅读“组件树的示例”部分时,我对组件树的加载方式感到困惑,因为无处可寻找加载顺序。
angular如何找到root指令和嵌套指令(可能在模板中)?哪个组件应该先开始工作?我的意思是,如果嵌套的component()早于其指令的外观被调用,那么它的指令出现后会被调用吗?当指令/模板加载时,angular如何知道调用的相应组件?或者只是迭代所有组件方法?或者首先加载所有组件,然后根据index.html形成组件层次结构,然后正确调用它?
有人好心解释一下吗?非常感谢!
答案 0 :(得分:1)
感谢 estus !,您的anwser真的很有帮助!根据{{3}}和 Pete Bacon Darwin 的AngularJS : How does the HTML compiler arrange the order for compiling?:
comiple()
方法来完成整个模板加载,然后将它们的controller()
方法调用到指令层次结构。
<小时/> 这来自:example
注意Angular在DOM节点上运行而不是在DOM节点上运行是很重要的 字符串。通常,你没有注意到这个限制,因为当a 页面加载,Web浏览器自动将HTML解析到DOM中。
HTML编译分三个阶段进行:
$compile
遍历DOM并匹配指令 如果编译器发现元素与指令匹配,则该指令将添加到与DOM匹配的指令列表中 元件。单个元素可以匹配多个指令。- 一旦识别出与DOM元素匹配的所有指令,编译器就会按照
priority
对指令进行排序。
每个 指令的compile
函数被执行。每个compile
函数 有机会修改DOM。每个compile
函数返回一个link
功能。这些功能组成一个&#34;组合&#34;链接 function,调用每个指令返回的link
函数。$compile
通过调用上一步中的组合链接函数将模板与范围链接。这反过来会 调用各个指令的链接功能,注册 关于元素的听众,并设置How directives are compiled sscope
,因为每个指令都配置为。{/ li> 醇>