一.指令的作用:实现语义化标签
我们常用的HTML标签是这样的:
- <div>
- <span>目录</span>
- </div>
而使用AngularJS的directive(指令)机制,我们可以实现这样的东西
- <tabset>
- <tab title='Home'>
- <p>Welcome home!</p>
- </tab>
- <tab title='Preferences'>
- <p>Content</p>
- </tab>
- <tabset>
和JSP或者Struts等等框架里面的taglib功能一样,只不过这里是使用JavaScript来实现的。
二.实例1
DirectiveStudy01.html
- <html ng-app='app'>
- <body>
- <hello></hello>
- </body>
- <script src="lib/angular/angular.js"></script>
- <script src="directive/HelloDirect.js"></script>
- </html>
HelloDirect.js
- var appModule = angular.module('app', []);
- appModule.directive('hello', function() {
- return {
- restrict: 'E',
- template: '<div>Hi there</div>',
- replace: true
- };
- });
运行结果:
对于DirectiveStudy01.html里面的<hello>标签,浏览器显然是不认识的,它唯一能做的事情就是无视这个标签。那么,为了让浏览器能够认识这个标签,我们需要使用Angular来定义一个hello指令(本质上说就是自己来把<hello>替换成浏览器能识别的那些标准HTML标签)。
从运行结果可以看到,<hello>已经被<div>Hi there</div>这个标签替换掉了,这也是以上JS代码里面replace:true这行配置的作用,代码里面的template配置项当然就是我们要的div标签啦,至于restrict:'E'这个配置项的含义,请看下表:
三.实例2
如果需要替换的HTML标签很长,显然不能用拼接字符串的方式来写,这时候我们可以用templateUrl来替代template,从而可以把模板写到一个独立的HTML文件中。
四.实例3
五.实例4
六.实例5