一.启动阶段
浏览器解析html页面,读取到angular.js的<script>标签后会停止解析后面的dom节点,开始执行angular.js,与此同时,angular会设置一个事件监听器来监听domcontentloaded事件,当angular监听到这个事件后,angular就启动了。
二.初始化阶段
angular启动后,它会查找ng-app指令,然后初始化一系列必要的组件(即$injector、$compile服务以及$rootscope),接着继续解析dom。
三.编译、链接阶段
1.angular使用$compile服务通过遍历dom树的方式查找带有指令的dom元素,然后根据指令的priority优先级对这些查找到的指令进行排序。
2.之后使用$injector服务查找和收集每个指令下面的compile函数,并执行它。
3.每个节点的compile方法运行之后,$compile服务就会调用链接函数。这个链接函数为绑定了封闭作用域的指令设置监控。这一行为会创建实时视图。
4.以上所有完成后,angular启动完成
四.运行阶段
angular提供了自己的事件循环。指令自身会注册事件监听器,因此当事件被触发时,指令函数就会运行在angularjs的$digest循环中。$digest循环会等待$watch表达式列表,当检测到模型变化后,就会调用$watch函数,然后再次查看$watch列表以确保没有模型被改变。一旦$digest循环稳定下来,并且检测到没有潜在的变化了,执行过程就会离开angular上下文并且通常会回到浏览器中。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持移动技术网!
如对本文有疑问, 点击进行留言回复!!
Angular8引入百度Echarts进行图表分析的实现代码
解决Angularjs异步操作后台请求用$q.all排列先后顺序问题
angular inputNumber指令输入框只能输入数字的实现
网友评论