棱角分明的逻辑梦魇

时间:2016-12-01 14:51:28

标签: angularjs logic

我想在满足某些条件时出现一个按钮,但我无法理解逻辑。

说出逻辑:

如果表单GenericFormFields有效并且:  如果勾选了系统的复选框,系统的表单有效则显示按钮,否则不显示。并非所有系统都需要选择。

我面临的问题是,当不需要系统时,我不知道如果不需要系统C而不知道如何排除该系统,系统A&检查B,我希望表达式评估为真:

ng-show="GenericFormFields.$valid && ( 
 (sysCheckBox.SystemSelected.a && SystemFormA.$valid) || 
 (sysCheckBox.SystemSelected.b && SystemFormB.$valid) ||
 (sysCheckBox.SystemSelected.c && SystemFormC.$valid)
)

我知道上面的内容不会起作用,因为当选择一个系统并且有效时它会评估为真。并且以同样的方式,如果仅选择两个系统,则以下不会评估为真,因为&&在评估为true之前,运算符将希望检查所有系统并使其有效:

ng-show="GenericFormFields.$valid && ( 
 (sysCheckBox.SystemSelected.a && SystemFormA.$valid) && 
 (sysCheckBox.SystemSelected.b && SystemFormB.$valid) &&
 (sysCheckBox.SystemSelected.c && SystemFormC.$valid)
)

对此的帮助将非常感激。

2 个答案:

答案 0 :(得分:2)

GenericFormFields。$ valid&&

(!sysCheckBox.SystemSelected.a || SystemFormA。$ valid)&& (!sysCheckBox.SystemSelected.b || SystemFormB。$ valid)&& (!sysCheckBox.SystemSelected.b || SystemFormC。$ valid)

答案 1 :(得分:0)

第一个应该有效,因为当至少一个条件为真时它将是真的