javascript - AngularJS - skillnaden mellan pristine/dirty och touched/untouched


AngularJS-utvecklarguide - Formulär listar många stilar och direktiv som rör formulär och fält. För varje enskilt en CSS-klass:

ng-valid
ng-invalid
ng-pristine
ng-dirty
ng-touched
ng-untouched

Vad är skillnaden mellan pristine/dirty och touched/untouched?

Svar #1

AngularJS Utvecklargaride - CSS-klasser som används av AngularJS

  • @property {boolean} $untouched Sant om kontrollen ännu inte har tappat fokus.
  • @property {boolean} $touched Sant om kontrollen har tappat fokus.
  • @property {boolean} $pristine Sant om användaren ännu inte har interagerat med kontrollen.
  • @property {boolean} $dirty Sant om användaren redan har interagerat med kontrollen.

Svar #2

$pristine/$dirty berättar om användaren faktiskt ändrat något, medan $touched/$untouched berättar om användaren bara varit där/visited.

Detta är verkligen användbart för validering. Anledningen till $dirty har alltid varit att undvika att visa valideringsmeddelanden tills användaren faktiskt har besökt en viss kontroll. Men genom att endast använda $dirty-egenskapen skulle användaren inte få någon valideringsfeedback om de inte faktiskt ändrade värdet. Så ett $invalid-fält skulle fortfarande inte visa användaren en uppmaning om användaren inte ändrade/interagerade med värdet. Om användaren helt enkelt tabbade igenom ett obligatoriskt fält och ignorerade det, såg allt bra ut tills du skickade in.

Med Angular 1.3 och ng-touched kan du nu ställa in en viss stil på en kontroll så snart användaren har besökt och sedan lämnat den, oavsett om de faktiskt redigerade värdet eller inte.

Här är en CodePen som visar skillnaden i beteende.

Svar #3

I boken Pro Angular-6 beskrivs det i detalj enligt nedan;

  • giltig: Denna egenskap returnerar true om elementets innehåll är giltigt och false annars.
  • ogiltig: Denna egenskap returnerar true om elementets innehåll är ogiltigt och false annars.

  • pristine: Denna egenskap returnerar true om elementets innehåll inte har ändrats.

  • dirty: Denna egenskap returnerar true om elementets innehåll har ändrats.
  • oberörd: Denna egenskap returnerar true om användaren inte har besökt elementet.
  • touched: Denna egenskap returnerar true om användaren har besökt elementet.

Svar #4

Detta är ett sent svar men hoppas att detta kan hjälpa.

Scenario 1: Du besökte webbplatsen för första gången och rörde inget fält. Formulärets tillstånd är

ng-orerörd och ng-oförstörd

Scenario 2: Du matar för närvarande in värdena i ett specifikt fält i formuläret. Då är tillståndet

ng-orerörd och ng-smutsig

Scenario 3: Du är klar med att ange värdena i fältet och har gått vidare till nästa fält

ng-touched och ng-dirty

Scenario 4: Säg att ett formulär har ett telefonnummerfält. Du har fyllt i numret men du har faktiskt fyllt i 9 siffror men 10 siffror krävs för ett telefonnummer. Då är tillståndet ng-invalid

Kort sagt:

ng-untouched: När formulärfältet ännu inte har besökts

ng-touched: När formulärfältet besöks OCH fältet har förlorat fokus

ng-pristine: Formulärfältets värde har inte ändrats

ng-dirty: Formulärfältets värde har ändrats

ng-valid : När alla valideringar av formulärfält är framgångsrika

ng-invalid: När någon validering av formulärfält inte lyckas

Svar #5

Det är värt att nämna att valideringsegenskaperna är olika för formulär och formfält (notera att touched och untouched endast gäller fält):

Input fields have the following states:

$untouched The field has not been touched yet
$touched The field has been touched
$pristine The field has not been modified yet
$dirty The field has been modified
$invalid The field content is not valid
$valid The field content is valid

They are all properties of the input field, and are either true or false.

Forms have the following states:

$pristine No fields have been modified yet
$dirty One or more have been modified
$invalid The form content is not valid
$valid The form content is valid
$submitted The form is submitted

They are all properties of the form, and are either true or false.

Relaterade artiklar