我想要一個指令,檢查組件tag name
,並根據某些條件顯示/隱藏組件。我想隱藏起來像ng-if
(不初始化組件的控制器)。例如:角ng,如果像指令
<my-component custom-if></my-component>
指令custom-if
內部:
return {
compile: function($element) {
if($element[0].tagName === 'some condition'){
//Element is my-component
$element.remove();
}
}
};
我的問題是,即使我刪除元素它仍然呼籲控制器我組分的。如果我刪除指令的compile
或preLink
函數中的元素,也會發生同樣的情況。我也試圖繼承ng-if
,但我不能讓組件的標籤名內custom-if
指令,因爲該元素是一個comment
(可能是ng-if
特定的行爲來包裝裏面comment元素)
UPDATE:改變postLink
功能到compile
,以確保它不能正常工作。顯示/隱藏元素,但即使是刪除它總是實例化控制器,這就是我想避免
而不是做你的邏輯鏈路的移動它來編譯。在那裏做它應該允許你從DOM中刪除該元素,並且從鏈接中排除該元素。 –
它沒有幫助。我在問題 – jonasnas
中寫道好了,但關鍵是告訴$編譯器在編譯函數中跳過模板編譯的鏈接階段。編譯器總是返回總是有權訪問控制器的鏈接函數(作爲第四個參數),所以除非你停止編譯,否則你總是會得到一個控制器。很好的問題btw。 –