angular 自定义指令参数详解
- restrict:指令在dom中的声明形式 E(元素)A(属性)C(类名)M(注释)
- priority优先级:一个元素上存在两个指令,来决定那个指令被优先执行
- terminal:true或false,告诉angular是否中止执行比高优先级指令低的指令
- template:两种形式,一种HTML文本;一个能够接受两个参数的函数,tElemetn和tAttrs,并返回一个表明模板的字符串。模板字符串必须存在一个根DOM元素
- templateUrl:两种形式,一种表明外部HTML文件路径的字符串;一个能够接受两个参数的函数,参数为tElement和tAttrs,并返回一个外部HTML文件路径的字符串
- replace:模板会被当作子元素插入到调用指令的DOM元素中仍是替换该DOM元素
- scope:默认是false,true是会从父做用域继承并建立一个新的做用域对象,scope设置为一个空对像{},指令的模板就没法访问外部做用域了,词为隔离做用域,有三种方法能够使隔离做用域内的数据同指令外的做用域进行数据绑定,1,@(or @attr)内部能够使用外部做用域变量;2,=(or =attr)双向绑定;3,&(or &attr)传递引用
- controller:字符或函数,当为字符串时,会以字符串的名字来查找注册在应用中的控制器的构造函数。咱们能够将任意的能够被注入的Angularjs服务传递给控制器,在控制器中也有一些特殊的服务能够被注入到指令中,如:controller:function($scope, $element, $attrs $transclude)。$transclude 嵌入连接函数会与对应的嵌入做用域进行绑定,transclude连接函数是实际被执行的用来克隆元素和操做DOM的函数。指令的控制器和link函数能够进行互换,控制器主要用来提供能够在指令间复用的行为,但连接函数只能在当前指令中定义行为,且没法在指令间复用。
- controllerAs:字符串,设置控制器的别名
- require:参数能够被设置为字符串或数组,字符串表明另一个指令的名字,require 会将控制器注入到其值所指定的指令中,并做为当前指令的连接函数的第四个参数。require 参数的值能够用下面的前缀进行修饰,这会改变查找控制器时的行为: ? 若是在当前指令中没有找到所须要的控制器,会将 null 做为传给 link 函数的第四个参数。若是添加了 ^ 前缀,指令会在上游的指令链中查找 require 参数所指定的控制器。 ?^ 将前面两个选项的行为组合起来,咱们可选择地加载须要的指令并在父指令链中进行查找。若是没有前缀,指令将会在自身所提供的控制器中进行查找,若是没有找到任何控制器就抛出一个错误。
- compile (对象或函数):compile 选项能够返回一个对象或函数。若是设置了 compile 函数,说明咱们但愿在指令和实时数据被放到DOM中以前进行DOM操做,在这个函数中进行诸如添加和删除节点等DOM操做是安全的。本质上,当咱们设置了 link 选项,其实是建立了一个 postLink() 连接函数,以便 compile() 函数能够定义连接函数。
欢迎关注本站公众号,获取更多信息