angular创建自定义指令的四种方式

  angular除了内置的部分指令,还可以通过.directive来自定义指令。要调用自定义指令,HTML 元素上需要添加自定义指令名。使用驼峰法来命名一个指令:nsHeader,在调用时使用需要-来分割:ns-header。自定义指令调用的的方式有四种,如下:

  • 元素名
  • 属性
  • 类名
  • 注释

1、使用元素名调用:

 1 <!DOCTYPE html>
 2 <html ng-app="myApp">
 3 <head>
 4     <meta charset="utf-8">
 5     <script src="js/angular/angular.js" type="text/javascript" charset="utf-8"></script>
 6     <title>angular指令</title>
 7 </head>
 8 <body>
 9     <ns-header></ns-header>
10
11     <script type="text/javascript">
12         var app = angular.module("myApp", []);
13         app.directive("nsHeader", function(){
14             return {
15                 template: "<header>这个是头部指令!</header>"
16             };
17         });
18     </script>
19 </body>
20 </html>

2、使用属性调用:

 1 <!DOCTYPE html>
 2 <html ng-app="myApp">
 3 <head>
 4     <meta charset="utf-8">
 5     <script src="js/angular/angular.js" type="text/javascript" charset="utf-8"></script>
 6     <title>angular指令</title>
 7 </head>
 8 <body>
 9     <div ns-header></div>
10
11     <script type="text/javascript">
12         var app = angular.module("myApp", []);
13         app.directive("nsHeader", function(){
14             return {
15                 template: "<header>这个是头部指令!</header>"
16             };
17         });
18     </script>
19 </body>
20 </html>

3、使用类名调用:

 1 <!DOCTYPE html>
 2 <html ng-app="myApp">
 3 <head>
 4     <meta charset="utf-8">
 5     <script src="js/angular/angular.js" type="text/javascript" charset="utf-8"></script>
 6     <title>angular指令</title>
 7 </head>
 8 <body>
 9     <div class="ns-header"></div>
10
11     <script type="text/javascript">
12         var app = angular.module("myApp", []);
13         app.directive("nsHeader", function(){
14             return {
15             restrict: ‘C‘,
16                 template: "<header>这个是头部指令!</header>"
17             };
18         });
19     </script>
20 </body>
21 </html>

注:你必须设置 restrict 的值为 "C" 才能通过类名来调用指令。

4、使用注释调用:

 1 <!DOCTYPE html>
 2 <html ng-app="myApp">
 3 <head>
 4     <meta charset="utf-8">
 5     <script src="js/angular/angular.js" type="text/javascript" charset="utf-8"></script>
 6     <title>angular指令</title>
 7 </head>
 8 <body>
 9     <!-- directive: ns-header -->
10
11     <script type="text/javascript">
12         var app = angular.module("myApp", []);
13         app.directive("nsHeader", function(){
14             return {
15                 restrict : "M",
16                 replace : true,
17                 template: "<header>这个是头部指令!</header>"
18             };
19         });
20     </script>
21 </body>
22 </html>

注:需要在该实例添加 replace 属性, 否则评论是不可见的。必须设置 restrict 的值为 "M" 才能通过注释来调用指令。调用时,注释内中的-和字母间需要添加空格,否则无法调用成功,例如<!--directive: ns-header-->则为错误调用方式。

  你也可以通过限制指令只能通过特殊的方式调用,例如限定只能通过属性的方式来调用:

 1 <!DOCTYPE html>
 2 <html ng-app="myApp">
 3 <head>
 4     <meta charset="utf-8">
 5     <script src="js/angular/angular.js" type="text/javascript" charset="utf-8"></script>
 6     <title>angular指令</title>
 7 </head>
 8 <body>
 9     <ns-header></ns-header><!--此种方式不生效-->
10
11     <div ns-header></div><!--只能通过属性方式调用-->
12
13     <script type="text/javascript">
14         var app = angular.module("myApp", []);
15         app.directive("nsHeader", function(){
16             return {
17                 restrict : "A",
18                 template: "<header>这个是头部指令!</header>"
19             };
20         });
21     </script>
22 </body>
23 </html>

注:当指定restrict为"A"时,只能通过属性方式调用。

restrict的值有以下四种,默认为E和A,即通过元素名和属性来调用指令:

  • E作为元素名使用
  • A作为属性使用
  • C作为类名使用
  • M作为注释使用

本文参考地址:http://www.runoob.com/angularjs/angularjs-directives.html

时间: 2024-10-12 16:13:20

angular创建自定义指令的四种方式的相关文章

angular2采用自定义指令(Directive)方式加载jquery插件

由于angular2兴起不久,相关插件还是很少,所以有时候不得不用一些jquery插件来完成项目, 那么如何把jquery插件放到angular2中呢?采用自定义指令! 在上下文之前要引入jquery,这点不再描述 首先创建一个指令,采用@input方式,来获取jquery插件所需要的参数. 在ngOnChanges时,也就是参数通过@input传入时,初始化jquery插件, 初始化jquery插件需要获取dom元素,所以我们引入ElementRef,用来获取dom元素 这里需要讲一下,jqu

带你走近AngularJS - 创建自定义指令

为什么使用AngularJS 指令? 使用过 AngularJS 的朋友应该最感兴趣的是它的指令.现今市场上的前端框架也只有AngularJS 拥有自定义指令的功能,并且AngularJS 是目前唯一提供Web应用可复用能力的框架. 目前有很多JavaScript 产品提供插件给Web开发人员.例如, Bootstrap 就是当前比较流行的提供样式和JavaScript插件的前端开发工具包.但是开发人员在使用Booostrap中的插件时, 必须切换到JavaScript 模式来写 jQuery

【微信公众平台开发】创建自定义菜单(四)

1.根据微信公众平台文档,得知创建自定义菜单有如下规则: a.目前自定义菜单最多包括3个一级菜单,每个一级菜单最多包含5个二级菜单.一级菜单最多4个汉字,二级菜单最多7个汉字,多出来的部分将会以"..."代替.请注意,创建自定义菜单后,由于微信客户端缓存,需要24小时微信客户端才会展现出来.建议测试时可以尝试取消关注公众账号后再次关注,则可以看到创建后的效果. 注:所以最多只能创建15个功能菜单,多了就出错了! b. 目前自定义菜单接口可实现两种类型按钮,如下: click: 用户点击

Android中多线程的使用四种方式最全总结

当我们启动一个App的时候,Android系统会启动一个Linux Process,该Process包含一个Thread,称为UI Thread或Main Thread.通常一个应用的所有组件都运行在这一个Process中,当然,你可以通过修改四大组件在Manifest.xml中的代码块(<activity><service><provider><receiver>)中的android:process属性指定其运行在不同的process中.当一个组件在启动的

angular的自定义指令---详解

1.angualr指令 在angualr自己里面有许多丰富的指令,但都是平时所常见的,但对于自己所需要的可能有所欠缺,所以自己可能会摒弃原声指令,自己封装更为健壮灵活的指令: 其实angular里面的指令也是基于下面所用到的步骤来创建的,只不过他都添加到了全局中,所以可以直接使用: 2.创建自定义指令 首先创建模块app,再使用app的服务directive方法, 创建指令内容第一个参数自定义的名字,第二个参数是自定义参数属性对象,该对象包括的属性基本在代码注释解释清楚: // a.创建模块 v

C#_批量插入数据到Sqlserver中的四种方式

先创建一个用来测试的数据库和表,为了让插入数据更快,表中主键采用的是GUID,表中没有创建任何索引.GUID必然是比自增长要快的,因为你生成一个GUID算法所花的时间肯定比你从数据表中重新查询上一条记录的ID的值然后再进行加1运算要少.而如果存在索引的情况下,每次插入记录都会进行索引重建,这是非常耗性能的.如果表中无可避免的存在索引,我们可以通过先删除索引,然后批量插入,最后再重建索引的方式来提高效率. create database CarSYS;    go    use CarSYS;  

linux下实现web数据同步的四种方式(性能比较)

实现web数据同步的四种方式 ======================================= 1.nfs实现web数据共享2.rsync +inotify实现web数据同步3.rsync+sersync更快更节约资源实现web数据同步4.unison+inotify实现web数据双向同步 ======================================= 一.nfs实现web数据共享 nfs能实现数据同步是通过NAS(网络附加存储),在服务器上共享一个文件,且服务器需

实现web数据同步的四种方式

http://www.admin10000.com/document/6067.html 实现web数据同步的四种方式 1.nfs实现web数据共享 2.rsync +inotify实现web数据同步 3.rsync+sersync更快更节约资源实现web数据同步 4.unison+inotify实现web数据双向同步 一.nfs实现web数据共享 nfs能实现数据同步是通过NAS(网络附加存储),在服务器上共享一个文件,且服务器需要设置文件系统的权限和配置文件设置的权限,权限两者之间取交集,然

Android——数据存储(四种方式之一)SharedPrefereces

Android--数据存储(四种方式) 1.SharedPrefereces   轻量级.XML  存储文件名,数据保存在data/data/basepackage/shared_prefs/myopt.xml中   实例-收藏-记住密码自动登录 //一种轻量级的数据存储方式//通过KEY 存入数据--putxxxx(key,value) 取出数据--getxxxx(key  default)   2.读写SD卡  SD的根目录  适用于数据流读写 3.SQLite  轻量级.dp文件多用于手机