$dirty vs $invalid: Was ist der Unterschied?
Ich bin ein Neuling in eckig. Ich bin verwirrt durch $dirty
und $invalid
Sie fast gleich klingen.
Was ist der Unterschied zwischen $dirty
und $invalid
verwendet in email
ng-model
? Unten ist die scenario
. Es ist ein Beispiel für die form W3Schools.
<form ng-app="myApp" ng-controller="validateCtrl" name="myForm" novalidate>
<p>
Username:<br>
<input type="text" name="user" ng-model="user" required>
<span style="color: red" ng-show="myForm.user.$dirty && myForm.user.$invalid">
<span ng-show="myForm.user.$error.required">Username is required.</span>
</span>
</p>
<p>
Email:<br>
<input type="email" name="emaill" ng-model="email" required>
<span style="color: red" ng-show="myForm.email.$dirty && myForm.email.$invalid">
<span ng-show="myForm.email.$error.required">Email is required.</span>
<span ng-show="myForm.email.$error.email">Invalid email address.</span>
</span>
</p>
<p>
<input type="submit" ng-click="Count()"
ng-disabled="myForm.$invalid" title="Submit" value="Submit">
</p>
</form>
EDIT 1:
Frage ich mich, ob ich das ng-Modell-Namen von email
zu email8
es geht nicht mehr.
<input type="email" name="emaill" ng-model="email8" required>
Ob die Validierung ist dabei von myForm
HTML-element der name ist nicht definiert mit ng
Attribut. Wie funktioniert es?
ng-show="myForm.email.$dirty && myForm.email.$invalid"
- Dirty bedeutet, dass es berührt wird bereits durch den Benutzer. Ungültig bedeutet, wenn es keine gültige Eingabe, d.h. eine Zahl anstelle von einem Buchstaben
- Möglich, Duplikat der In AngularJS, was ist der Unterschied zwischen ng-pristine-und ng-dirty?
- Ja sollte geschlossen werden. Es ist eine Frage, die Sie leicht finden können, die Antwort für.
- Nein sollte es nicht .. Es ist nicht ng-unberührte vs ng-dirty
- Was bestimmt, ob $unwirksam wird false? Wo kann man das einstellen? Welche Regeln werden verwendet, um festzulegen, ob ein Feld gültig ist?
Du musst angemeldet sein, um einen Kommentar abzugeben.
$dirty
: Es wird TRUE, wenn der Benutzer bereits die Wechselwirkung mit der form.$invalid
: Es wird WAHR, wenn mindestens eine mit Formular und Steuerelement ungültig ist.Quelle
Auch auf Winkel-Docs
Nachdem das update in Frage...Die Validierung durchgeführt wird auf das Formular-element-Namen. Alle ng-Modelle in einem Formular erfasst wird, und das ist, wie es funktioniert.
Ändert auch ein ng-model name hat keine Auswirkung auf die Validierung. Ich habe versucht, deinen link und es funktioniert für mich. Das hat zu arbeiten.
myform.email.$dirty
durch den Zugriff auf html-element-name.. richtig??$dirty ist True, wenn der Benutzer bereits in Wechselwirkung mit der Eingabe. Und $unwirksam ist true, wenn die Eingabe keine gültige E-Mail-Adresse
$dirty
bedeutet, dass der Benutzer geändert hat Eingangswert$invalid
bedeutet, dass die Adresse ungültig ist. Also der Fehler wird nur angezeigt, wenn der Benutzer hat sich aktiv verändert den eingegebenen Wert entweder einen leeren oder ungültigen Wert.$error
ist das Objekt von Fehlern, wo der Schlüssel ist das Feld name der Validierung und Wert ist die tatsächliche Fehlermeldungfür dieses Beispiel
myForm.emailName.$error.email = true
wenn die E-Mail ist nicht abgestimmt mit format.myForm.emailName.$error.required = true
wenn Sie noch nicht Hinzugefügt anyhting im Eingabefeldkönnen Sie überprüfen, gültig oder nicht, der Bereich direkt über
myForm.emailName.$valid
aberdas problem in deinem Fall ist Sie wollen, um dem Benutzer zu zeigen, was ist der Fehler, indem er zwei Fälle. so trat Sie auch in
$error object
zu prüfen, für dieerror is required email or invalid email
damit Sie verwendet werden
$error
Objekt.dies ist, wie Sie myForm.emailName sieht:
Ich denke, das Beispiel geben, indem Sie erklärt eine Menge.
Du getan hast Fehler Das ist, warum es nicht funktioniert , können Sie unten sehen-code, die Sie geschrieben haben
Warum es nicht funktioniert, weil der input-Namen, die Sie gegeben haben "emaill" und in
myForm.email.$dirty
Sie gegeben haben "E-Mail", Wenn beide Namen sollten identisch sein, dann wird es funktionieren