Quelles sont les nuances de l'héritage prototypique/prototypique de portée dans AngularJS ?
Héritage prototypique en JavaScript
- L'héritage prototypique est un mécanisme par lequel un objet hérite des propriétés de son prototype.
- Dans AngularJS, les scopes héritent normalement de manière prototypique de leurs scopes parents.
Exceptions
- Directives avec scope : { ... } créer des isoler les étendues qui n'héritent pas de manière prototypique de leur parents.
Nuances
Masquage des propriétés de la portée enfant
- Normalement, les modifications sont apportées aux propriétés de la portée enfant n'affecte pas les propriétés de la portée parent.
- Cependant, lors de la liaison de données bidirectionnelles à un primitive dans la portée parent à partir d'une portée enfant, la portée enfant crée sa propre propriété qui masque la propriété parent du même nom.
Solutions
- Utiliser des objets pour les primitives dans la portée parent (par exemple, parentObj.someProp).
- Utilisez $parent.parentScopeProperty.
- Définissez une fonction dans la portée parent et appelez-la depuis l'enfant.
Ng -repeat
- Ng-repeat crée des portées enfants et les attribue les valeurs des éléments aux nouvelles propriétés sur ces étendues enfants.
- La liaison aux primitives dans les tableaux de portée parent à partir des étendues enfants ng-repeat entraîne des propriétés de portée enfant qui sont indépendantes du tableau parent.
- À éviter ceci, utilisez un tableau d'objets dans la portée parent et liez-vous aux propriétés de l'objet dans le ng-repeat.
Isoler Portées
Portées transcluses
- Créé par des directives avec transclude : true.
- Hériter de manière prototypique de portées parents.
- Frères et sœurs pour isoler les portées si les deux existent dans une directive.
Résumé
- La plupart des portées héritent de manière prototypique de portées parent.
- Des exceptions existent, telles que les portées isolées créées par directives.
- Les nuances à prendre en compte incluent le masquage des propriétés de la portée enfant et des considérations spéciales pour ng-repeat.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!