【问题标题】:Logic nightmare in angular角度的逻辑噩梦
【发布时间】:2016-12-01 14:51:28
【问题描述】:

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

说明逻辑:

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

我面临的问题是,当不需要系统时,我不知道如何从评估中排除该系统,如果不需要系统 C 并且检查了系统 A 和 B,我想要表达式评估为真:

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

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

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

我们将不胜感激。

【问题讨论】:

  • 如果我正确理解了您的问题,是否有一些有条件需要的复选框?您能否发布表单的相关部分?
  • 不...复选框始终存在-当单击复选框并且其相关表单有效时...然后显示一个按钮...因此,如果选中复选框 a 和 b 并且它们的表单是有效的,然后显示按钮....我遇到的问题是复选框 c 坐在那里,因为它没有被检查(因此是错误的)它使整个语句评估为错误

标签: angularjs logic


【解决方案1】:

GenericFormFields.$valid &&

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

【讨论】:

  • 哇,麦克不知道你是怎么想的,但它奏效了!谢谢!姆瓦克
【解决方案2】:

第一个应该有效,因为当至少有一个条件为真时,它才会为真

【讨论】:

  • 但对于我的情况不起作用。假设我只想完成系统 A 和 B,然后在完成系统 A 后显示按钮 - 但实际上我只想在系统 A 和 B 完成后显示。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-12-21
  • 2020-03-14
  • 2010-11-13
  • 2010-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多