> For the complete documentation index, see [llms.txt](https://xiaoxiami.gitbook.io/angularjs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://xiaoxiami.gitbook.io/angularjs/zhi_ling.md).

# 指令

## 什么是指令

* 可以利用指令来扩展HTML标签，增加声明式语法来实现想做的任何事，可以对应用有特殊意义的元素和属性来替换一般的HTML标签
* angular也内置了非常多的指令，ng-app、ng-controller

## 指令和HTML校验

* angular 内置指令的语法，已ng开始，代表angular命名空间，连接符后面的内容代表指令的名称
* 指令的语法在很多HTML校验规则中是不合法的，Angular提供了多种调用指令方法，可以顺利通过不同校验的规则

| 校验器   | 格式                  | 示例           |
| ----- | ------------------- | ------------ |
| none  | namespace-name      | ng-bind      |
| XML   | namespace:name      | ng:bind      |
| HTML5 | data-namespace-name | data-ng-bind |
| XHTML | x-namespace-name    | x-ng-bind    |

## 指令的执行过程

* 浏览器得到 HTML 字符串内容，解析得到 DOM 结构。
* ng 引入，把 DOM 结构扔给 $compile 函数处理：
* 找出 DOM 结构中有变量占位符
* 匹配找出 DOM 中包含的所有指令引⽤用
* 把指令关联到 DOM
* 关联到 DOM 的多个指令按权重排列
* 执行指令中的 compile 函数（改变 DOM 结构，返回 link 函数）
* 得到的所有 link 函数组成⼀一个列表作为 $compile 函数的返回
* 执行 link 函数（连接模板的 scope）。
