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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM