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?
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.
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.
Tags und Links angularjs