首页 > 代码库 > angular(24)---揭秘Angular

angular(24)---揭秘Angular

当浏览器触发DOMContentLoaded事件时,Angular就开始工作,它首先寻找ng-app指令。

 

视图工作原理:

  浏览器在提取脚本时,会暂停DOM解析并等待脚本取回。

  当angular.js被取回时,浏览器会执行它,同时设置一个监听器来监听浏览器的DOMContentLoaded事件。

 

1、编译阶段

  $compile服务会遍历DOM树并搜集它找到的所有指令,然后将所有这些指令的链接函数合并为一个单一的链接函数。然后这个链接函数会将编译好的末班链接到$rootScope中

  如果浏览器在DOM中找到ng-app指令,它会为我们自动启动应用。如果没有找到这个指令,Angular期望我们自己手动启动应用。

手动启动应用:

var  newEle = document.createElement("div");

angular.bootstrap(newEle,[‘myapp‘]);

如果在ng-app属性中没有指定应用程序,则Angular会加载一个不带特定模块的应用。如果指定了,Angular就会加载与这个指令相关联的模块。

 

2、运行时

  在标准的浏览器流程中事件循环会等待事件执行(比如鼠标移动,点击,按键等),当这些事件发生时,他们会放到浏览器的事件队列中。如果有哦函数处理程序对事件做出响应,浏览器就会将event对象作为参数来调用这些事件处理程序。

ele.addEventListener(‘click‘,function(event){});

angularJS中对事件循环做了一点增强,并且Angular还提供了自己的事件循环。指令自身会注册事件监听器,因此当事件被触发时,指令函数就会运行在AngularJS的$digest循环中。

angular(24)---揭秘Angular