AngularJS中指令,可以简单地理解为绑定在dom上的函数,在html编译时会被执行。
1、指令声明:
directive("yourDirectiveName",function(){});
指令通过directive函数来声明,该函数有两个参数,第一个参数表示的是你定义的指令名称,这里的名称必须采用驼峰命名的方式。第二个参数是一个函数,返回一个js对象。
2、指令的调用:
指令的调用方式有四种:
1) 元素的方式
2) 属性的方式
3) class的方式
4) 注释的方式
下面结合一个例子来看看指令的声明和调用:
1、example.html
<!DOCTYPE html> <html ng-app="myApp"> <head> <title>my-directive</title> <meta charset="UTF-8"> <script src="../../js/angular.min.js"></script> </head> <body> <div my-directive></div> <script> angular.module('myApp',[]) .directive('myDirective', function() { return { restrict:"A", template: '<a href="http://www.baidu.com">\ Click me to go to Baidu</a>' }; }); </script> </body> </html>这里有一点需要说明的地方:在js中我们声明指令的方式必须是驼峰命名方式,但是在html中我们调用指令的写法不必是驼峰方式,可以用“-”来分割。
这里的restrict表示的是:在html中调用指令的方式。restrict的值有四种:
1) "E":元素方式调用<my-directive></my-directive>
2) "A":属性方式调用<div my-directive></div>
3) "C":class方式调用<div class="my-directive"></div>
4)"M":注释的方式调用,一般不推荐
默认是采用属性调用的方式。
这里的template表示的是模板的意思,嵌套在该指令标签中。
这里需要注意的一个地方是,在template第一行末尾加上了一个"\"的原因是,当template有多行时,每行的末尾必须加上"\",angularJS才能正确地识别模板。