angular學習筆記2015728

1.將$parse服務注入到控制器中,而後調用就能夠實現手動解析表達式。函數

2.若是指令使用了transclude參數,那麼在控制器(下面立刻會介紹)中就沒法正常監聽數據模型的變化了ui

3.因爲指令能夠require其餘指令所使用的控制器,所以控制器常被用來放置在多個指令間共享的動做。對象

若是咱們但願將當前指令的API暴露給其餘指令使用,可使用controller參數,不然能夠作用域

使用link來構造當前指令元素的功能性。若是咱們使用了scope.$watch()或者想要與DOM元素編譯

作實時的交互,使用連接會是更好的選擇。模板

技術上講,$scope會在DOM元素被實際渲染以前傳入到控制器中。在某些狀況下,例如使
用了嵌入,控制器中的做用域所反映的做用域可能與咱們所指望的不同,這種狀況下,$scope
對象沒法保證能夠被正常更新。require

4.渲染

require參數的值能夠用下面的前綴進行修飾,這會改變查找控制器時的行爲:
?
若是在當前指令中沒有找到所須要的控制器,會將null做爲傳給link函數的第四個參數。
^
若是添加了^前綴,指令會在上游的指令鏈中查找require參數所指定的控制器。
?^
將前面兩個選項的行爲組合起來,咱們可選擇地加載須要的指令並在父指令鏈中進行查找。
沒有前綴
若是沒有前綴,指令將會在自身所提供的控制器中進行查找,若是沒有找到任何控制器(或
具備指定名字的指令)就拋出一個錯誤。技術

5.儘管元素能夠被多個指令所支持或修飾,數據

這些指令自己的模板中也能夠包含其餘指令,但只有屬於最高優先級指

令的模板會被解析並添加到模板樹中。這裏有一個建議,就是將包含模板的指令和添加行爲的指令分離開來。若是一個元素已經有一個含有模板的指令了,永遠不要對其用另外一個指令進行修飾。只有具備最高優先級的指令中的模板會被編譯。

相關文章
相關標籤/搜索