# AngularJS 权威教程笔记 - 2 ## 8. 指令简介 ### 8.1 指令-自定义HTML元素或属性 基于我们对 HTML 元素的理解,指令本质上就是 AngularJS 扩展具有自定义功能的 HTML 元素的途径。 Directives are markers on a DOM element that tell AngularJS's HTML compiler ($compile) to attach a specified behavior to that DOM element (e.g. via event listeners), or even to transform the DOM element and its children. #### 自定义指令 AngularJS 模块中的 `.directive()` 方法用来注册新指令。声明指令本质上是在 HTML 中通过元素、属性、类或注释来添加功能。 #### 指令的命名与使用规则 AngularJS 要求指令的命名使用 **驼峰式** 语法,而在 HTML 代码中,使用的是 **连接符** 的形式。这是因为 HTML 对大小写不敏感,而 JS 对大小写敏感,于是 AngularJS 提出了这套解决方法。 AngularJS 在解析 HTML 时,会将名称取出,并进行以下处理: 1. 去除字段的 `x-` 或 `data-` 头。 2. 将字段中的连接符号去除,并将第二个单词开始改为首字母大写,然后连起来。 ```js // AngularJS 支持 ng-bind ng:bind ng_bind data-ng-bind x-ng-bind 这些用法,处理后结果都是一样的 var PREFIX_REGEXP = /^((?:x|data)[\:\-_])/i; function directiveNormalize(name) { return camelCase(name.replace(PREFIX_REGEXP, '')); } ``` #### 给指令赋值 由于指令可以用属性的形式调用,我们可能会好奇如果给属性赋值会发生什么: ```html