指令定义对象
每个指令定义的工厂函数,需要返回一个指令定义对象,编译器/$compile 在编译时就根据这个定义对象对指令进行展开。
指令定义对象的常用属性如下:
- link
link函数负责实现DOM和scope的数据绑定,通常在link里执行DOM事件监听和数据变化监听。 link函数在template执行后被调用。link是最常用的属性,一个指令的逻辑通常在link函数 里实现。
link函数的形式如下:
- function link(scope,iElement,iAttrs,controller,transcludeFn){...}
- restrict
可以是EACM这四个字母的任意组合,用来限定指令的应用场景。如果不指定这个属性, 默认情况下,指令将仅允许被用作元素名和属性名:
- * E - 元素名,例如:<my-directive></my-directive>
- * A - 属性名,例如:<div my-directive="exp"></div>
- * C - 类,例如:<div class="my-directive: exp;"></div>
- * M - 注释,例如:<!-- directive:my-directive exp -->
- template
template是一个HTML片段,可以用来:
- * 替换指令的内容。这是默认的行为,可以使用replace属性更改。
- * 替换指令本身(如果replace属性设为TRUE的话)。
- * 包裹指令的内容(如果transclue属性设为TRUE的话)。
- replace
指明是否使用template替换指令元素。
- * true - 编译时,将使用template替换指令元素
- * false - 编译时,将使用template替换指令元素的内容
时间: 2024-10-11 08:55:57