3 votes

Qu'est-ce que nous devrions utiliser pour assigner des données de modèle dans Angular JS ?

Je voudrais savoir quelle est la meilleure façon d'assigner le nom du modèle à chaque élément de formulaire en utilisant Angular JS.

Je peux l'assigner en utilisant des variables de portée individuelles.

Je peux aussi l'assigner en utilisant un objet singleton.

Quelle est la meilleure façon de gérer les données du formulaire en termes de mémoire et de temps d'exécution?

2voto

n00dl3 Points 12707

Vous devriez choisir la deuxième option, afin d'éviter les problèmes liés à l'héritage de portée, consultez la documentation:

L'héritage de portée est généralement simple, et vous n'avez souvent même pas besoin de savoir qu'il se produit... jusqu'à ce que vous essayez la liaison de données à double sens (c'est-à-dire, les éléments de formulaire, ng-model) à un type primitif (par exemple, nombre, chaîne de caractères, booléen) défini sur la portée parente depuis la portée enfant.

0voto

Khalid Hussain Points 1512

Selon Miško Hevery, le créateur d'AngularJS:

Chaque fois que vous utilisez ng-model, il doit y avoir un point quelque part. Si vous n'avez pas de point, vous faites une erreur.

La question est pourquoi?

Parce que ng-switch, ng-repeat, etc. créent leurs propres portées. Par exemple, jetez un œil à ce plnkr

          Nom 1: 

          Nom 2: 

          Nom 3: 

Sortie:

description de l'image ici

Lorsque vous tapez dans la zone de texte Nom 1, la valeur s'affiche immédiatement dans toutes les zones de texte. C'est comme prévu. Le problème est que lorsque vous tapez dans la zone de texte Nom 2, sa valeur est déconnectée et les valeurs des trois zones de texte ne sont plus synchronisées. C'est à cause du fonctionnement de l'héritage prototypal en JavaScript.

Pour éviter cela, nous devrions utiliser un point dans ng-model. Par exemple, jetez un œil à ce plnkr

          Nom 1: 

          Nom 2: 

          Nom 3: 

Sortie:

description de l'image ici

Maintenant, le code fonctionne avec les trois zones de texte toujours synchronisées.

Source:

  1. Rencontre d'AngularJS MTV: Meilleures pratiques (2012/12/11)
  2. 5 Antimodèles et pièges d'AngularJS
  3. Pourquoi la valeur ng-model devrait contenir un point
  4. Portées imbriquées dans AngularJS
  5. AngularJS: point dans ng-model
  6. Quelles sont les subtilités de l'héritage prototypique de portée dans AngularJS?
  7. Est-ce que mon ng-model a vraiment besoin d'avoir un point pour éviter les problèmes de portée enfant?
  8. AngularJS: Si vous n'utilisez pas un .(point) dans vos modèles, vous faites une erreur?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X