2016-12-01 6 views
1

Ich möchte eine Schaltfläche haben, wenn bestimmte Bedingungen erfüllt sind, aber ich kann mich nicht um die Logik kümmern.Logischer Albtraum in Winkel

Um die Logik zu buchstabieren:

Wenn die Form GenericFormFields gültig ist und: Wenn ein Kontrollkästchen aktiviert und Form ist die des Systems ist das System gültig, dann schaltet Taste anzeigen, sonst nicht. Nicht alle Systeme müssen ausgewählt werden.

Das Problem, mit dem ich konfrontiert bin, ist, wenn ein System nicht erforderlich ist, weiß ich nicht, wie dieses System von der Auswertung auszuschließen, wenn System C nicht erforderlich ist und System A & B sind, möchte ich die Ausdruck auszuwerten wahr:

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

ich kenne die oben nicht funktionieren, da es wahr ausgewertet wird, wenn nur ein System ausgewählt und gültig ist. Und in der gleichen Art und Weise bewerten die folgenden werden nicht auf true, wenn nur zwei Systeme ausgewählt werden, da die & & werden von einem Operator alle Systeme wollen zu prüfen und gültig vor true Auswertung:

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

und helfen auf diese würde viel sein geschätzt.

+0

Also, wenn ich Ihre Frage richtig einige Kontrollkästchen zu verstehen, dass ein Re bedingt erforderlich? Können Sie die relevanten Teile Ihres Formulars posten? –

+0

Nein ... die Checkboxen sind immer da - wenn eine Checkbox angeklickt wird und das zugehörige Formular gültig ist ... dann eine Schaltfläche anzeigen ... wenn Checkbox a und b aktiviert sind und ihre Formulare gültig sind, dann zeige die Schaltfläche an .... das Problem, das ich habe, ist, dass die Checkbox c dort sitzt und weil es nicht überprüft (und daher falsch), dass die gesamte Aussage zu falsch –

Antwort

0

Zuerst sollte man arbeiten, weil es wahr ist, wenn mindestens eine der Bedingungen erfüllt ist

+0

bewerten, aber für meine Situation, die nicht funktioniert. Sagen wir, ich möchte nur die Systeme A und B vervollständigen, dann, nachdem ich System A abgeschlossen habe, zeigt die Schaltfläche - aber eigentlich will ich nur, dass sie nach dem System A & B angezeigt wird. –

2

GenericFormFields. Gültig $ & &

(! SysCheckBox.SystemSelected.a || SystemFormA. $ Valid) & & (! sysCheckBox.SystemSelected.b || SystemFormB. $ gültig) & & (! sysCheckBox.SystemSelected.b || SystemFormC. $ gültig)

+0

Wow Mike nicht sicher, wie Sie so denken, aber es hat funktioniert! Vielen Dank! Mwarkk –