Angularjs 如何向“添加多个条件”;ng残疾人士;?

Angularjs 如何向“添加多个条件”;ng残疾人士;?,angularjs,angularjs-directive,Angularjs,Angularjs Directive,在启用按钮之前,我需要检查两个条件是否均为真: 以下是一个例子: <button type="submit" ng-disabled="frmUser.pw2.$error.pwMatch" class="btn btn-primary" ng-click="ChangePassword()">Change</button> 更改 此示例仅包含ng disabled中的一个条件。如何添加另一个变量,如范围变量?您应该能够&&条件: ng-disabled="condi

在启用按钮之前,我需要检查两个条件是否均为真:

以下是一个例子:

<button type="submit" ng-disabled="frmUser.pw2.$error.pwMatch" class="btn btn-primary" ng-click="ChangePassword()">Change</button>
更改

此示例仅包含
ng disabled
中的一个条件。如何添加另一个变量,如范围变量?

您应该能够
&&
条件:

ng-disabled="condition1 && condition2"

实际上,ng disabled指令对我来说与“| |”逻辑运算符一起工作。“&&”只计算一个条件


Wanny是正确的。
&&
运算符在HTML中不起作用。使用Angular时,必须对多个条件使用双管道(
|
)。

确保以正确的优先级包装条件

ng-disabled="((!product.img) || (!product.name))"

原始问题的措辞可能有点捉摸不透:

在启用按钮之前,我需要检查两个条件是否都为真

要记住的第一件事是ng disabled指令正在评估一个条件,在这个条件下按钮应该被禁用,但最初的问题是指它应该被启用的条件。在ng禁用表达式不是“truthy”的任何情况下,它都将启用

因此,首先要考虑的是如何重新表述问题的逻辑,以更接近ng残疾人的逻辑要求。为了启用按钮,检查两个条件是否为真的逻辑反义词是,如果任一条件为false,则应禁用按钮

因此,在原始问题的情况下,ng disabled的伪表达式是“如果条件1为false或条件2为false,则禁用按钮”。转换为Angular()所需的类似Javascript的代码片段,我们得到:

!!条件1 | |!条件2

Zoomlar说得对

这种方法对我很有效


ng disabled=“(user.Role.ID!=1)和&(user.Role.ID!=2)”

您可以尝试类似的方法

<button class="button" ng-disabled="(!data.var1 && !data.var2) ? false : true">
</button>


这对我来说效果很好。

为什么要进行否决投票和关闭运动?@scrowler——那么,你是说AngularJS不会对我在同一元素中两次声明有任何问题?也许我对HTML的理解不是问题所在。谢谢——我对Angular不太熟悉,并用大括号括起了表达式。或者你可以使用ng disabled=“condition1 | | condition2”,这取决于你的逻辑条件。你能不能激发反对票。只是想让我知道我的错误在哪里。尽管我没有投你反对票,但我明白原因:你的答案完全错误:“ng disabled指令”适用于任何表达式,当表达式的计算结果为truthy时,它将禁用控件。无论是| |还是&&都是一个完全不同的问题(逻辑或vs AND),明白了,谢谢。只是想与大家分享一个事实,即&&运算符与ng指令有一个奇怪的行为。对不起,绝对没有“奇怪的行为”-它的行为与JS&&运算符完全相同:一个逻辑AND运算符,如果需要确定最终结果,它只计算第二个参数。例如,“a&&b”->如果a为假,则不需要计算b,结果无论如何都是“假”是(请看我的回答:“只计算一个条件”,这就是为什么如果您需要检查多个条件以启用/禁用按钮,&&运算符不是正确的解决方案。嗯,这个答案是不正确的。&&表示逻辑and,| |表示逻辑OR。因此,如果您的两个条件都需要为真才能禁用控件,请使用&。如果其中一个或两个条件都需要为真,请使用| |@Reto.@Reto你能看一下我的jsbin吗?使用运算符&,按钮仅在1个条件下启用。使用| |或按钮仅在两个条件都为真时启用。我看了你的jsbin。我想你把自己和那些“不”混淆了!。它按预期工作。尽量不要使用双重否定,那么所有这些逻辑表达式突然变得更有意义,您(和其他任何人)可以更容易地理解您的代码:而不是!$vaild使用$invalid,而不是!items.length write items.length>0。也许您是对的,这是新的bin,(这次没有!).为什么这么多人对这个不正确的答案投了赞成票?&&在角度表达中效果很好。对这个问题的分析很好——你的答案对其他登上这一页的人肯定有用。