Dans AngularJS, quelle est la différence entre ng-vierge et ng-sale?
Quelles sont les différences entre ng-pristine
et ng-dirty
? Il semble que vous pouvez avoir à la fois être true
:
$scope.myForm.$pristine = true; //after editing the form
Vous devez vous connecter pour publier un commentaire.
La
ng-dirty
classe vous dit que le formulaire a été modifié par l'utilisateur, alors que leng-pristine
classe vous dit que le formulaire n'a pas été modifiés par l'utilisateur. Doncng-dirty
etng-pristine
sont les deux faces de la même histoire.Les classes sont définies sur un champ, tandis que le formulaire est composé de deux propriétés,
$dirty
et$pristine
.Vous pouvez utiliser le
$scope.form.$setPristine()
fonction pour réinitialiser un formulaire à l'état initial (veuillez noter que ceci est un AngularJS 1.1.la fonctionnalité x).Si vous voulez un
$scope.form.$setPristine()
-ish comportement même de la version 1.0.x branche d'AngularJS, vous avez besoin de déployer votre propre solution (de quelques très bons peuvent être trouvés ici). Fondamentalement, cela signifie une itération sur tous les champs de formulaire et l'établissement de leurs$dirty
drapeau àfalse
.Espère que cette aide.
vierge nous dit si un champ est encore vierge, et sale nous indique si l'utilisateur a déjà tapé quoi que ce soit dans le domaine connexe:
HTML:
Un champ qui a inscrit un seul événement keydown n'est plus vierge (il n'est plus vierge) et est donc sale pour toujours.
Les deux directives évidemment servir le même but, et bien qu'il semble que la décision de l'angulaire de l'équipe d'inclure à la fois interférer avec le principe SEC et ajoute à la charge utile de la page, c'est assez pratique d'avoir autour. Il est plus facile de votre style de saisie des éléments que vous avez à la fois .ng-vierges et .ng-sale disponibles pour le style de vos fichiers css. Je suppose que c'était la principale raison de l'ajout de ces deux directives.
.ng-pristine
et.ng-dirty
permettre à différents style css - ce qui semble le plus correct raison derrière le la répétitionComme déjà dit dans les réponses précédentes,
ng-pristine
est pour indiquer que le champ n'a pas été modifié, alors queng-dirty
est pour dire qu'il a été modifié. Pourquoi faut-il deux?Disons que nous avons un formulaire avec téléphone et e-mail parmi les champs. Soit par téléphone ou par e-mail est nécessaire, et vous devez également avertir l'utilisateur quand ils l'ont obtenu des données non valides dans chaque champ. Ceci peut être accompli en utilisant
ng-dirty
etng-pristine
ensemble:ng-vierge ($vierges)
Boolean True si le formulaire d'entrée n'a pas encore été utilisées (pas modifiés par l'utilisateur)
ng-sale ($sale)
Boolean True si le formulaire d'entrée a été utilisé (modifiés par l'utilisateur)
$setDirty();
Les ensembles de la forme d'un sale état.
Cette méthode peut être appelée pour ajouter le "ng-sale" de la classe et de définir la forme d'un sale état (ng-sale de classe). Cette méthode de propagation de l'état actuel de formulaires parent.
$setPristine();
Les ensembles de la forme à son état primitif.
Cette méthode définit la forme$, à l'état primitif est vrai, l' $sale état false, supprime la ng-sale de classe et ajoute de la ng-immaculée de la classe. En outre, il définit l' $présenté l'état false.
Cette méthode sera également se propager à tous les contrôles contenus dans ce formulaire.
Définition d'une forme de retour à un état primitif est souvent utile lorsque l'on veut "réutiliser" une forme après l'enregistrement ou le réinitialiser.