Qual è la differenza tra required
e ng-required
(form validation)?
Qual è la differenza tra required
e ng-required
(form validation)?
Risposte:
Gli elementi del modulo AngularJS cercano l' required
attributo per eseguire le funzioni di convalida. ng-required
ti consente di impostare l' required
attributo in base a un test booleano (ad esempio, richiede solo il campo B - ad esempio un numero di studente - se il campo A ha un certo valore - se hai selezionato "studente" come scelta )
Ad esempio, <input required>
e <input ng-required="true">
sono essenzialmente la stessa cosa
Se ti stai chiedendo perché sia così (e non solo make <input required="true">
o <input required="false">
), è dovuto alle limitazioni dell'HTML - l' required
attributo non ha alcun valore associato - la sua semplice presenza significa (secondo gli standard HTML) che l'elemento è richiesto - quindi angolare ha bisogno di un modo per impostare / disinserire il valore richiesto ( required="false"
sarebbe HTML non valido)
<form method="post" action="/foo" novalidate>
. Ancora una volta, questo è un attributo html5, non correlato a angularJS.
ng-required
punta a una variabile ambito / controller, Angular lo controlla per le modifiche e imposta l'attributo richiesto di conseguenza. Mentre nel caso del semplice required
attributo HTML non hai quel tipo di flessibilità. No? E mentre siamo sullo stesso argomento, che dire ng-attr-required
? È esattamente lo stesso di ng-required
?
Vorrei fare un addon per la risposta di Tiago :
Supponiamo che stai nascondendo l'elemento usando ng-show
e aggiungendo un required
attributo sullo stesso:
<div ng-show="false">
<input required name="something" ng-model="name"/>
</div>
genererà un errore simile a:
Un controllo modulo non valido con nome = '' non è attivabile
Questo perché non è possibile imporre la required
convalida sugli hidden
elementi. L'utilizzo ng-required
semplifica l' applicazione condizionale della convalida richiesta, il che è semplicemente fantastico !!
ng-if
invece di ng-show
/ ng-hide
per eludere quel potenziale problema.
L' attributo HTML required="required"
è una dichiarazione che indica al browser che questo campo è obbligatorio per rendere valido il modulo. ( required="required"
è il modulo XHTML, solo usando required
è equivalente)
L' attributo Angular ng-required="yourCondition"
significa 'isRequired (yourCondition)' e imposta l'attributo HTML dinamicamente per te a seconda delle tue condizioni.
Si noti inoltre che la versione HTML è fonte di confusione , è non è possibile scrivere qualcosa di simile condizionale required="true"
o required="false"
, solo la presenza delle materie degli attributi (mezzi presenti vero)! Qui è dove Angular ti aiuta ng-required
.