Formular in angularjs als ungültig festlegen

8

Ich muss ng-form am Start als ungültig definieren, da es ein späterer Teil eines Assistenten ist. Das Formular enthält ein Raster mit Elementen. Jedes Element hat seine eigene Validierung, aber das Problem ist, dass das Formular als gültig angezeigt wird, wenn keine Elemente vorhanden sind. Ich muss es für den Startfall als ungültig markieren, wenn die Anzahl der Zeilen 0 ist. Wie kann man es tun?

    
stride 14.01.2014, 10:43
quelle

2 Antworten

18

Nach ein paar Recherchen funktioniert der folgende Code gut für mich. In der Steuerung:

%Vor%

Das Zeitlimit gewährleistet, dass wir Zugriff auf das Formular erhalten. Sie werden nicht auf dem ersten Durchlauf über den Controller erstellt, so dass eine Zeitüberschreitung oder Überwachung erforderlich ist. Dann markieren wir das Formular als ungültig. Ein besserer Weg könnte darin bestehen, eine Eingabe zu finden, die wir mit der dokumentierten API $setValidity auf ngModelController als ungültig markieren können, aber in meinem Anwendungsfall gibt es noch keine Eingabe, also machen wir es auf eine schmutzige Art.

Ein Vorbehalt ist, dass wenn man das direkt wie oben über dem entsprechenden $ invalid setzt ===! $ valid Invariant ist kaputt, also sei vorsichtig mit diesem Hack.

    
stride 14.01.2014, 10:51
quelle
2

Ich denke, das Folgende ist eine sauberere Lösung.

%Vor%

Ich mag die $watch besser; Zunächst wollte ich prüfen, "ob das Formular noch nicht erstellt wurde" und erst dann die Gültigkeit festlegen.

Aber es scheint, dass es nicht wirklich benötigt wird, das Formular wird erstellt, bevor das $ watch seine Anfangszeit ausgeführt wird (also wird keine Änderung für die Uhr aufgerufen).

Die $setValidity scheint Teil der ngForm-API zu sein (ich fand sie in der form.js Quellcode) und es wird von Formularsteuerelementen selbst verwendet, die beide $ valid und $ invalid festlegen.

    
user3638471 08.02.2017 22:18
quelle

Tags und Links