AngularJS--自定義指令和模板


一、自定義指令:

  1. 先創建模塊    var app=angular.module("myApp",[]);

  2. 創建自定義指令 (directive后面的參數一:自定義指令的名稱,參數二:function 返回值是一個對象 template是模板)

  app.directive("shen",function(){
  return {
  template:"<h1>這是自定義屬性</h1>"
  }
  })
  3.划定模塊范圍,使用自定義指令
  <body ng-app="myApp">
  <shen></shen>

二、模板--引入外部文件

上面是模板最基本的使用方式,模板還可以引用外部文件,當模板的內容稍大一點的時候,引用外部文件更好
定義一個模板文件,最好是把作為模板的文件統一放在template文件夾下。模板文件不需要html、body等標簽,直接寫你需要的模板標簽即可

   

  此時自定義指令中的template換成templateUrl,后面寫模板文件的相對路徑,其他不變

     

三、在script標簽中寫模板

  新建一個script標簽,這個標簽必須有id,和type,id隨便取名字,type為固定寫法  type="text/ng-template"。

  在這個script標簽中寫模板,寫法和一般標簽寫法一樣。

  此時自定義指令中templateUrl對應的值為 script標簽的id名

     

四、自定義指令的不同實現方式

  以上方法中自定義指令都是以標簽的形式實現的,其實自定義指令還可以用屬性和類名的形式實現

  

  當以類名形式編寫時,還必須在定義指令時添加restrict屬性  (使用屬性和標簽的方式時不寫也可正常顯示)  

  restrict是“限制”的意思,屬性值可以為E(element),A(attribute),C(class),當你希望實現方式只能是標簽時,可以寫restrict:“E”,restrict:“EAC”表示三種方式都可以,以此類推。

  

五、自定義模板內容

  上面的模板內容都是固定的,實際開發中模板的內容都是由項目需要而生成的,如何讓每一個模板的內容不一樣呢? 使用   transclude

  1. 在模板中的標簽里添加 ng-transclude,(如果你需要某個標簽里的內容自定義就添加ng-transclude屬性,如果希望是固定的值就不需要加)

  2. 添加屬性 transclude:true

  2. 在實現自定義指令時,把自定義的內容寫在指令標簽的里面即可

        

 

 

 

  

  

 

 

 

 

 




  

 


免責聲明!

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



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