angular 自定義指令參數詳解


  • restrict:指令在dom中的聲明形式 E(元素)A(屬性)C(類名)M(注釋)
  • priority優先級:一個元素上存在兩個指令,來決定那個指令被優先執行
  • terminal:true或false,告訴angular是否停止執行比高優先級指令低的指令
  • template:兩種形式,一種HTML文本;一個可以接受兩個參數的函數,tElemetn和tAttrs,並返回一個代表模板的字符串。模板字符串必須存在一個根DOM元素
  • templateUrl:兩種形式,一種代表外部HTML文件路徑的字符串;一個可以接受兩個參數的函數,參數為tElement和tAttrs,並返回一個外部HTML文件路徑的字符串
  • replace:模板會被當做子元素插入到調用指令的DOM元素中還是替換該DOM元素
  • scope:默認是false,true是會從父作用域繼承並創建一個新的作用域對象,scope設置為一個空對像{},指令的模板就無法訪問外部作用域了,詞為隔離作用域,有三種方法可以使隔離作用域內的數據同指令外的作用域進行數據綁定,1,@(or @attr)內部可以使用外部作用域變量;2,=(or =attr)雙向綁定;3,&(or &attr)傳遞引用
  • controller:字符或函數,當為字符串時,會以字符串的名字來查找注冊在應用中的控制器的構造函數。我們可以將任意的可以被注入的Angularjs服務傳遞給控制器,在控制器中也有一些特殊的服務可以被注入到指令中,如:controller:function($scope, $element, $attrs $transclude)。$transclude 嵌入鏈接函數會與對應的嵌入作用域進行綁定,transclude鏈接函數是實際被執行的用來克隆元素和操作DOM的函數。指令的控制器和link函數可以進行互換,控制器主要用來提供可以在指令間復用的行為,但鏈接函數只能在當前指令中定義行為,且無法在指令間復用。
  • controllerAs:字符串,設置控制器的別名
  • require:參數可以被設置為字符串或數組,字符串代表另外一個指令的名字,require 會將控制器注入到其值所指定的指令中,並作為當前指令的鏈接函數的第四個參數。require 參數的值可以用下面的前綴進行修飾,這會改變查找控制器時的行為: ? 如果在當前指令中沒有找到所需要的控制器,會將 null 作為傳給 link 函數的第四個參數。如果添加了 ^ 前綴,指令會在上游的指令鏈中查找 require 參數所指定的控制器。 ?^ 將前面兩個選項的行為組合起來,我們可選擇地加載需要的指令並在父指令鏈中進行查找。如果沒有前綴,指令將會在自身所提供的控制器中進行查找,如果沒有找到任何控制器就拋出一個錯誤。
  • compile (對象或函數):compile 選項可以返回一個對象或函數。如果設置了 compile 函數,說明我們希望在指令和實時數據被放到DOM中之前進行DOM操作,在這個函數中進行諸如添加和刪除節點等DOM操作是安全的。本質上,當我們設置了 link 選項,實際上是創建了一個 postLink() 鏈接函數,以便 compile() 函數可以定義鏈接函數。


免責聲明!

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



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