2016-10-11 4 views
2

Was ist der Grund für Angulars Entscheidung, die Klasse eines Eingangs nicht von ng-dirty auf ng-pristine zurückzusetzen, nachdem der Benutzer ein Feld manuell auf seinen Anfangswert zurückgesetzt hat?ng-dirty nicht zurückgesetzt, nachdem der Benutzer das Feld manuell zurückgesetzt hat?

Ich möchte meine Speicherlogik nur ausführen, wenn der Benutzer tatsächlich einige der Daten des Formulars geändert hat. Gibt es einen besseren Weg als den Anfangszustand manuell zu halten und nach Unterschieden zu suchen?

+0

Setzt wie? . . . –

+0

Zum Beispiel ist der Anfangswert in der Eingabe "Hallo", der Benutzertyp "a", der neue Eingabewert ist "Hallo", der Zustand ist schmutzig. Der Benutzer drückt die Rücktaste, der neue Wert ist wieder 'Hallo', der Winkel sollte (imho) den Zustand auf nicht-schmutzig zurücksetzen. –

Antwort

1

Der Status lautet dirty Dies bedeutet, dass der Benutzer den Wert geändert hat. Angular verfolgt den ursprünglichen Wert jedoch nicht und kann daher nicht feststellen, ob der ursprüngliche Wert wiederhergestellt wurde.

Wenn Sie wissen möchten, ob sich der Wert geändert hat, müssen Sie den Wert speichern und bei submit vergleichen, wenn sich der Wert geändert hat.

+0

"Der Status ist schmutzig, dh der Benutzer hat den Wert berührt." - Ist es nicht das, was die Staaten "ng-touched" und "ng-unberührt" sind? Willst du das nicht einmal damit sagen, dass "der User den Wert berührt hat" :-) –

+0

Du hast recht, sorry. AFAIK es behält immer noch nicht den ursprünglichen Wert um zu vergleichen. 'ng-touched' überprüft nur, ob das Steuerelement den Fokus hatte. –

+0

Ok, das ist wirklich bedauerlich. Wissen Sie etwas über die Gründe, warum sie keine Änderungsverfolgung eingebaut haben? Es ist wirklich beschwerlich, eine solche Logik für alle meine Felder zu schreiben ... schade. Ich erstelle eine Feature-Anfrage. –

Verwandte Themen