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