J'ai posté la même question sous une forme différente, mais personne n'a répondu. Je n'obtiens pas une image claire de ce que font les formateurs et les analyseurs dans angular js.
Par définition, les formateurs et les analyseurs me ressemblent. Peut-être que je me trompe, car je suis nouveau dans ce angularjs.
Définition des formateurs
Tableau de fonctions à exécuter, sous forme de pipeline, chaque fois que la valeur du modèle change. Chaque fonction est appelée, à son tour, en passant la valeur à la suivante. Utilisé pour formater / convertir les valeurs à afficher dans le contrôle et la validation.
Définition des analyseurs
Tableau de fonctions à exécuter, en tant que pipeline, chaque fois que le contrôle lit une valeur dans le DOM. Chaque fonction est appelée, à son tour, en passant la valeur à la suivante. Utilisé pour nettoyer / convertir la valeur ainsi que pour la validation. Pour la validation, les analyseurs doivent mettre à jour l'état de validité en utilisant $ setValidity () et renvoyer undefined pour les valeurs non valides.
S'il vous plaît, aidez-moi à comprendre les deux fonctionnalités avec un exemple simple. Une simple illustration des deux sera appréciée.
(123) 123-1234
pour un numéro de téléphone. Les analyseurs lisent les données à chaque fois qu'elles changent et sont généralement utilisés pour définir l'état $ valide de l'entrée. Les documents ont des exemples des deux.Réponses:
Ce sujet a été très bien couvert dans une question connexe: Comment faire un filtrage bidirectionnel dans AngularJS?
Résumer:
Voici un exemple simple, basé sur un exemple dans la documentation de l'api NgModelController :
Vous pouvez le voir en action: http://plnkr.co/UQ5q5FxyBzIeEjRYYVGX?plnkr=legacy
Lorsque vous tapez un nom dans (vue du modèle), vous verrez que le modèle est toujours en minuscules. Mais, lorsque vous cliquez sur un bouton et que vous modifiez le nom par programme (modèle à afficher), le champ de saisie est toujours en majuscule.
la source
ngModel.$setViewValue(transformedInput);
pour le définir etngModel.$render();
le rendre à partir de la fonction $ parsers.$formatters
faire, est immédiatement inversé$validators
. ; (Une autre utilisation des formateurs et des parseurs est que lorsque vous souhaitez stocker des dates à l'heure UTC et les afficher à l'heure locale sur les entrées, j'ai créé la directive datepicker ci-dessous et le filtre utcToLocal pour cela.
Il utilise ce filtre utcToLocal qui garantit que la date d'entrée est dans le format correct avant la conversion en heure locale.
moment.js est utilisé pour convertir les dates locales en dates utc.
pickadate.js est le plugin datepicker utilisé
la source