Podręcznik programisty AngularJS - formularze informują, że istnieje wiele stylów i dyrektyw dotyczących formularzy i pól. Dla każdej klasy CSS:
ng-valid
ng-invalid
ng-pristine
ng-dirty
ng-touched
ng-untouched
Jaka jest różnica między pristine/dirty
i touched/untouched
?
Odpowiedzi:
Podręcznik programisty AngularJS - klasy CSS używane przez AngularJS
źródło
$pristine
/$dirty
informuje, czy użytkownik faktycznie coś zmienił , natomiast$touched
/$untouched
informuje, czy użytkownik tylko tam był / odwiedził .Jest to naprawdę przydatne do walidacji. Powodem
$dirty
było zawsze unikanie wyświetlania odpowiedzi walidacyjnych, dopóki użytkownik faktycznie nie odwiedził określonej kontroli. Jednak korzystając tylko z$dirty
właściwości, użytkownik nie otrzyma informacji zwrotnej o walidacji, chyba że faktycznie zmienił wartość. Tak więc$invalid
pole nadal nie wyświetlałoby użytkownikowi monitu, gdyby użytkownik nie zmienił / nie wchodził w interakcję z wartością. Jeśli użytkownik całkowicie zignorował wymagane pole, wszystko wyglądało dobrze.Dzięki Angular 1.3 i
ng-touched
możesz teraz ustawić określony styl na kontrolce, gdy tylko użytkownik się zamazał, niezależnie od tego, czy faktycznie edytował wartość, czy nie.Oto CodePen, który pokazuje różnicę w zachowaniu.
źródło
$setPristine
po prostu sprawia, że forma jest nie-$dirty
. Myślę, że możesz chciećform.setValidity()
. Zobacz kilka pomocnych odpowiedzi w tym poście .W książce Pro Angular-6 jest szczegółowo opisane poniżej;
nieprawidłowy : ta właściwość zwraca wartość true, jeśli zawartość elementu jest nieprawidłowa, lub false, jeśli jest inaczej.
pristine : ta właściwość zwraca wartość true, jeśli zawartość elementu nie została zmieniona.
źródło
Warto wspomnieć, że właściwości walidacji są różne dla formularzy i elementów formularzy (zauważ, że dotknięte i nietknięte dotyczą tylko pól):
źródło