自定義指令簡單介紹及使用
自定義指令無外乎增強了HTML,提供了額外的功能。
內(nèi)部指令基本能滿足我們的需求。
少數(shù)情況下我們有一些特殊的需要,可以通過自定義指令的方式實現(xiàn):
-
通過 模塊對象的directive方法創(chuàng)建
- 有兩個參數(shù)酷师,第一個參數(shù),是指令的名字:必須是駝峰命名法命名
第二個參數(shù)和控制器的第二個參數(shù)一樣,在第二個參數(shù)的function里直接返回的一個obj對象 - 使用時:需要將指令的名字轉(zhuǎn)成小寫惜浅,并以-分割原先在大小寫字母
- 有兩個參數(shù)酷师,第一個參數(shù),是指令的名字:必須是駝峰命名法命名
自定義指令中回函數(shù)里返回的對象的屬性
template:需要一個字符串瘫辩,最終這個字符串值被被添加到自定義指令所在標簽的innerHTML位置
templateUrl:需要一個字符串,這個字符串是一個文本文件的路徑,anuglar最終會異步請求這個文件坛悉,把拿到的內(nèi)容插入到自定義指令所在的標簽的innerHTML位置,
該字符串也可以是script標簽的id值伐厌,把script標簽中的內(nèi)容當作模板字符串來使用
注意:script的type屬性需要為"text/ng-template"restrict:也是需要一個字符,可以是A,E,C,M 這4個字符中任何一個裸影,也可以任意的組合挣轨,A:以屬性的形式使用,E:以自定義標簽的形式使用轩猩,C:表示以類樣式名的形式使用卷扮,M:以注釋的形式使用
replace: 需要一個布爾值荡澎,為true,會將自定義指令所在的標簽替換為模板字符串。
transclude:轉(zhuǎn)置晤锹,是需要一個布爾值摩幔,為true時會把自定義指令所在標簽的innerHTML值添加到模板字符串中,需要與ng-transclude指令配合使用鞭铆,ng-transclude指令需要將值插入到哪個元素的innerHTML位置.不能與replace指令同用或衡。
-
scope:需要一個對象,可以獲取到自定義指令所在標簽的屬性值:
{
屬性名:'@test', 屬性值需要以@開頭,@后面是自定義指令所在標簽的屬性名车遂,最終在模板字符串中通過表達式可以使用scope的屬性名可以直接輸出test:'@'// 是簡寫方式
}
-
link:指向一個function封断,這個function有三個參數(shù):
- scope: 類似于控制器中的$scope,也可以暴露一些值。
- element:這是一個jqLite對象舶担,是自定義指令所在標簽的jqLite對象
- attributes:是自定義指令所在標簽的所以屬性的集合.