1. 程式人生 > >關於directive裡的link和controller區別

關於directive裡的link和controller區別

1、執行順序:先controller後link
2、何時使用controller:一般場景下都不想要使用controller,只需要把邏輯寫在link中就可以了;用controller的場景就是該指令(假設為a)會被其他指令(假設為b)require的時候,這樣就會在b指令的link函式中傳入這個controller(如果require多個的話,傳入的是一個數組,陣列中存放的是每一個require的指令對應的controller),目的很顯然是為了指令間進行交流的。

關於非directive的scope能否用link?
在指令中才存在呼叫link的時候,也就是說link是該指令在compile之後和scope進行繫結的時候呼叫的。
那只有在指令定義的那個地方用到link了,其他地方也可以用,例如做彈出框的時候就需要,拿到模板tpl,然後呼叫var linkFn = $compile(angular.element(tpl));

此時返回的就是一個link的函式,然後linkFn(scope),這裡的scope是你需要指定的scope,可以是新建立的,也可以是已經存在的。