我试图检查输入是否被触摸并且是空的(没有角度内置函数)。
<form-input is-invalid-on="isTouched && !gs.data.name || gs.data.name.length > 50"></form-input>
如果isTouched && !gs.data.name
评估为true && false
,那么表达式的那一侧将变为false
所以我的问题很简单,如果输入被触摸并且它是空的还是长度大于50,我如何使整个表达式评估为真?
答案 0 :(得分:0)
<form-input is-invalid-on="(isTouched && !gs.data.name) || (gs.data.name.length > 50)"</form-input>
答案 1 :(得分:0)
可以尝试使用()
,也可以查看gs.data
1}} {/ 1}}
isTouched && (!gs.data || !gs.data.name || !gs.data.name.length || gs.data.name.length > 50)
答案 2 :(得分:0)
我相信它被用作属性指令。
is-invalid-on="(isTouched && gs.data.name.length) || gs.data.name.length > 50"
原因?我假设你的gs.data.name
是一个字符串。在javascript中评估时,空字符串仍然是一个真正的值。所以你必须评估它的长度。
答案 3 :(得分:0)
Angular表达式与javascript完全相同,我试试这个:
<form-input is-invalid-on="isTouched && gs.data.name.length==0 || gs.data.name.length > 50"></form-input>
假设您正确地将gs.data.name初始化为空字符串。
顺便说一句,你忘记了&gt;在你的标签上。
答案 4 :(得分:0)
看看它是否有效:
<form-input is-invalid-on="!!isTouched && gs.data.name.length === 0 || gs.data.name.length > 50" > </form-input>
答案 5 :(得分:0)
我终于找到了为什么它表现得如此奇怪的原因,因为这个问题有很多答案我无法删除它。所以我不妨解释发生了什么。
事实证明isTouched
总是undefined
,因为我在指令之外使用它(即使它在指令的属性中使用),这使得表达式undefined && false
导致isInvalidOn
始终为false
。
相反,我是这样做的,以便我在实际的isTouched
模板中稍后使用form-input
作为ng-class={invalid: isInvalidOn && isTouched}
,从而产生所需的行为。