我想要一个指令,检查组件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。 –