Javascript AngularJS指令';如果指令存在于ng if中,则s编译函数不会执行

Javascript AngularJS指令';如果指令存在于ng if中,则s编译函数不会执行,javascript,jquery,angularjs,Javascript,Jquery,Angularjs,我的AngualrJS(1.x)应用程序有一个自定义指令来执行文本框验证。该指令需要用作元素。需要验证的文本框应该位于指令元素内。该指令有一个具有验证逻辑的编译函数 该指令运行良好。但是我有一个场景,我需要根据单选按钮的点击来显示/隐藏文本框。为了实现这一点,我尝试将指令保持在ngif中,但一旦指令位于ngif中,编译函数就不会被触发。我试图保持链接功能中的逻辑,但链接功能也没有被触发。我无法将指令保留在sideng show中,因为在隐藏场景期间,所需字段验证仍处于活动状态,并且不希望在ng

我的AngualrJS(1.x)应用程序有一个自定义指令来执行文本框验证。该指令需要用作元素。需要验证的文本框应该位于指令元素内。该指令有一个具有验证逻辑的编译函数

该指令运行良好。但是我有一个场景,我需要根据单选按钮的点击来显示/隐藏文本框。为了实现这一点,我尝试将指令保持在
ngif
中,但一旦指令位于ngif中,编译函数就不会被触发。我试图保持链接功能中的逻辑,但链接功能也没有被触发。我无法将指令保留在side
ng show
中,因为在隐藏场景期间,所需字段验证仍处于活动状态,并且不希望在
ng required
中使用条件


有没有办法让我的指令在ng if中执行?我不知道为什么它没有被执行。非常感谢您的帮助。

ng if
ng show
都用于显示/隐藏DOM元素,但它们之间的一个主要区别是
ng if=“expression”
表达式的计算结果为false时从DOM中删除元素(当然它都是子元素)

ng show=“expression”
仅基于
.ng hide
类隐藏元素(该类添加
display:none

因此,当使用
ng if
时,表达式的计算结果为false,因为
ng if
具有更高的优先级,其他指令将不会运行或编译。这就是为什么您的自定义指令没有执行

使用
ng show
而不是
ng if

编辑:

我刚刚重新阅读了您的问题,并且了解到您无法
ng show
,因为需要进行字段验证。我也找到了解决办法

使用
ng required
而不是
required
,并使用将在
ng show
中使用的相同表达式(当前,在
ng if
中),如下所示:

ng-required="sameExpressionAsInNgShow"

如果选中复选框,这将仅标记该字段为必填。

可能是由
ng if
创建的子作用域。要显示/隐藏,请使用
ng hide/ng show
。不要写完整的段落,而是创建一个fiddle或plunker,这样很容易理解操作!!您也不想使用
ng required
。谢谢您的回复。我不想在ng required中使用表达式的原因是还有其他验证,如min length。如果用户选择选项按钮来显示字段,并且没有输入最小长度,然后隐藏控件,那么表单也是无效的。因此,我不想处理每次验证显示/隐藏。我不明白为什么在ng if==true场景中没有执行该指令。我试图将指令的优先级设置为2000,但也没有成功(哦!你的意思是说,即使
ng if
的计算结果为true,该指令也不会被编译?如果是,请提供一个plunkr/fiddle或StackOverflow代码段。