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() 函數能夠定義連接函數。
歡迎關注本站公眾號,獲取更多信息