Javascript 如何实现&&;angularjs表达式中的false等于true?

Javascript 如何实现&&;angularjs表达式中的false等于true?,javascript,angularjs,boolean-logic,Javascript,Angularjs,Boolean Logic,我试图检查输入是否已被触摸并且为空(angular中没有内置函数) 如果i被触动&&!gs.data.name的计算结果为true&&false,则表达式的那一侧变为false 所以我的问题很简单,如果输入被触摸,并且是空的或者长度大于50,我如何使整个表达式计算为真 可以尝试使用(),也可以检查gs.data如i打开(!gs.data | | |!gs.data.name | |!gs.data.name.length | | gs.data.name.length>50) <for

我试图检查输入是否已被触摸并且为空(angular中没有内置函数)


如果
i被触动&&!gs.data.name
的计算结果为
true&&false
,则表达式的那一侧变为
false

所以我的问题很简单,如果输入被触摸,并且是空的或者长度大于50,我如何使整个表达式计算为真

可以尝试使用
()
,也可以检查
gs.data
i打开(!gs.data | | |!gs.data.name | |!gs.data.name.length | | gs.data.name.length>50)

<form-input is-invalid-on="(isTouched && !gs.data.name) || (gs.data.name.length > 50)"</form-input>

我相信它被用作属性指令

在=“(i点击&gs.data.name.length)| gs.data.name.length>50”上无效


原因?我假设您的
gs.data.name
是一个字符串。在javascript中求值时,空字符串仍然是真实值。所以你必须评估它的长度

角度表达式的工作原理与我得到的javascript的工作原理不完全相同,请尝试以下内容:

<form-input is-invalid-on="isTouched && gs.data.name.length==0 || gs.data.name.length > 50"></form-input>

假设您正确地将gs.data.name初始化为空字符串


顺便说一句,你忘了标签上的>。

我终于找到了它行为如此奇怪的原因,因为这个问题有很多答案,我无法删除它。所以我还是解释一下发生了什么

原来
isTouched
始终是
未定义的
,因为我在指令之外使用它(即使它被用于指令的属性),这使得表达式
未定义&&false
,导致
isInvalidOn
始终是
false


相反,我这样做是为了在实际的
表单输入中使用
isTouched
模板作为
ng class={invalid:isInvalidOn&&isTouched}
,从而产生所需的行为。

true&&true
在javascript中不是真的吗?你在哪里读到的?为什么仅仅因为
true==true
不是
true
就应该
true&&true
变成
false
?还有,为什么在Javascript中
true==true
不应该是
true
?你的意思是
isTouched&!gs.data.name.length
?这是我读到的,我也通过打印它进行了检查,它说两者都是真的,但值是假的。这对我来说毫无意义。@kazupooot无论是否使用长度,它都会给出相同的结果。这被用作属性指令。你不能删除报价你是这样做的吗?(isTouched&!gs.data.name)| |(gs.data.name.length>50)尝试使用gs.data.name=undefinedIt是一个HTML属性,不是一个变量。编辑以使其更清晰。使用括号恐怕会给出相同的结果。使用括号没有任何区别。它只是增加了可读性。并且总是在或之前计算。更新我的答案。你现在可以试试吗?我需要检查输入是否为空,而不是它是否被触摸过并且有值。添加括号仍然没有任何作用。
<form-input is-invalid-on="isTouched && (!gs.data || !gs.data.name || !gs.data.name.length  || gs.data.name.length > 50)"></form-input>
<form-input is-invalid-on="isTouched && gs.data.name.length==0 || gs.data.name.length > 50"></form-input>