angularJs指令执行的机制==大概的三个阶段
第一阶段:加载阶段
angularJs要运行的话,需要去等待angular.js加载完成,加载完之后呢,angular就会去查找到ng-app这个指令,ng-app在每个应用里面只能出现一次,
它也就相当于我们的main方法,angularjs找到了ng-app之后,就确定了我们应用的边界在哪里。
所谓的边界,就是angularjs知道自己要管理哪一块的内容。
这样的话,angularjs才可以去启动起来,加载完成之后,就进入了第二阶段
第二阶段:编译阶段
这个阶段,angular.js会做很多的事情
第一步:首先它会去遍历dom,把整个dom结构中的所有的指令全部查找出来,然后缓存到内部的缓存里面去
第二步:会根据指令代码中的template,replace,transclue等对dom结构进行一些变换,
这时候,如果代码中存在compile函数,angluarjs也会去调用这个函数,如下是自定义的compile
不过一般我们在自定义指令的时候,是不会去自定义compile函数的,因为在调用自定义compile的时候,还要去调用内部默认的compile,否则默认的compile默认的行为就会被覆盖
第三阶段:链接阶段
链接阶段又会做些什么事情呢?
首先,每条指令的link指令都会被调用
我们在指令的编写指令代码的时候,除了可以写compile函数以外,还可以写link自定义函数,
angularjs在找到这个函数以后,angulajs也会去运行link函数,
我们知道,不要在controller或才其他地方操作dom,因为这个思想不符合angularjs的设计思想,
那么dom在哪些地方可以操作呢?我们可以在link中操作dom
那么这个link函数可以做些什么事情呢?
它可以为dom元素绑定一些事件,绑定作用域,比如双向数据绑定
指令和双向数据绑定,就是在link这个阶段运行的
以上就是angularjs指令执行的三个阶段。
以上内容了解即可。无需刻意去记忆。



angularJs指令执行的机制==大概的三个阶段的更多相关文章
- AngularJS 指令生命周期 complie link
AnguarJS指令从解析到生效一共会经历Inject.Compile.Controller加载.Pre-link.Post-link这几个主要阶段. 一.AngularJS指令执行过程 1.加载An ...
- AngularJS指令的详解
指令作为AngularJS中最为重要的部分,所以这个框架本身也是自带了比较多的的指令,但是在开发中,这些指令通常不能满足我们的需要,所以我们也是需要自定义一些指令的.指令是我们用来扩展浏览器能力的技术 ...
- angularjs指令(二)
最近学习了下angularjs指令的相关知识,也参考了前人的一些文章,在此总结下. 欢迎批评指出错误的地方. Angularjs指令定义的API AngularJs的指令定义大致如下 angula ...
- 【转】angularjs指令中的compile与link函数详解
这篇文章主要介绍了angularjs指令中的compile与link函数详解,本文同时诉大家complie,pre-link,post-link的用法与区别等内容,需要的朋友可以参考下 通常大家在 ...
- AngularJS指令进阶 – ngModelController详解
AngularJS指令进阶 – ngModelController详解 在自定义Angular指令时,其中有一个叫做require的字段,这个字段的作用是用于指令之间的相互交流.举个简单的例子,假如我 ...
- angularJS 指令解释
本文引自 http://blog.csdn.net/kongjiea/article/details/49840035 指令,很重要 AngularJS与jQuery最大的区别在哪里?我认为,表现在数 ...
- angularjs指令中的compile与link函数详解
这篇文章主要介绍了angularjs指令中的compile与link函数详解,本文同时诉大家complie,pre-link,post-link的用法与区别等内容,需要的朋友可以参考下 通常大家在 ...
- AngularJS 作用域与数据绑定机制
AngularJS 简介 AngularJS 是由 Google 发起的一款开源的前端 MVC 脚本框架,既适合做普通 WEB 应用也可以做 SPA(单页面应用,所有的用户操作都在一个页面中完成).与 ...
- AngularJs指令(一)
AngularJs应用现在越来越流行了,谷歌都与微软合作支持AngularJS2.0,这是要逆天了,说明AngularJs将来大势所趋.最近想跳槽,又重新拾起了AngluarJs(之前由于缺少项目应用 ...
随机推荐
- Codeforces Round #249 (Div. 2) A - Queue on Bus Stop
水题 #include <iostream> #include <vector> #include <algorithm> using namespace std; ...
- [BZOJ2797][Poi2012]Squarks
2797: [Poi2012]Squarks Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 211 Solved: 89[Submit][Status ...
- ThinkPHP3.2.3--相对路径的写法
window.location.href='/index.php/Home/Manager/login' 以 / 开始,而不是 ./
- linux查看memcached状态
一.使用memcache top脚本 memcache-top 是一个用 Perl 编写的命令行小工具,用来实时的获取 memcached 缓存服务器的详细信息,例如缓存命中率等.到官网下载脚本,放到 ...
- Maya 建模完成后的整理
我们在使用Maya建模完成后可能会进行发布,为了自己或他人的方便使用,我们需要对建立好的模型进行些处理: 1. 删除历史记录:选择模型,Edit -> Delete by Type -> ...
- AsyncTask的使用
简单的AnsyTask的使用demo 1.定义一个模拟网络操作的类 package com.example.administrator.myapplication; /** * Created by ...
- WPF 程序启动显示为通知区域的图标方法
首先需要引用 System.Windows; System.Drawing; public partial class MainWindow : Window { public MainWindo ...
- PHP168 6.0及以下版本login.php代码执行
在其域名后加上这样一段代码: login.php?makehtml=1&chdb[htmlname]=xx.php& chdb[path]=cache&content=< ...
- SubmitText 中配置lua 运行环境
一 新建编译系统 二.使用新建的编译系统 三配置 { "cmd": ["lua", "$file"], "file_regex&q ...
- jenkins使用deploy-plugin自动构建部署war包
jenkins+ant+maven+tomcat 1安装 jenkins 使用yum安装的 # 下载库 wget -O /etc/yum.repos.d/jenkins.repo http://pkg ...