Je travaille dans une petite équipe, bâtissant dans AngularJS et essayant de maintenir certaines normes de base et meilleures pratiques; surtout étant donné que nous sommes relativement nouveaux avec Angular.
Ma question concerne les directives. Plus précisément, les options restrict
.
Certains d’entre nous utilisent restrict: 'E'
et ont donc <my-directive></my-directive>
dans le code HTML.
D'autres utilisent restrict: 'A'
et ont <div my-directive></div>
dans le code HTML.
Ensuite, bien sûr, vous pouvez utiliser restrict: 'EA'
et utiliser l’un des choix ci-dessus.
Pour le moment, ce n'est pas grave, mais lorsque ce projet sera aussi ambitieux que possible, j'aimerais que quiconque l'examinera comprenne facilement ce qui se passe.
Existe-t-il des avantages/inconvénients pour l'attribut ou la manière de faire des éléments?
Y a-t-il des pièges que nous devrions connaître, si vous choisissez de choisir élément sur attribut?
Selon la documentation :
Quand dois-je utiliser un attribut par rapport à un élément? Utilisez un élément lors de la création d'un composant contrôlant le modèle. Le cas courant pour cela est lorsque vous créez un langage spécifique à un domaine pour des parties de votre modèle. Utilisez un attribut lorsque vous décorez un élément existant avec une nouvelle fonctionnalité.
Editez le commentaire suivant sur les pièges pour obtenir une réponse complète:
En supposant que vous construisez une application qui devrait fonctionner sous Internet Explorer <= 8 et que le support a été abandonné par l'équipe AngularJS à partir de AngularJS 1.3, vous devez suivre les instructions suivantes pour le faire fonctionner: https://docs.angularjs.org/guide/ie
restrict est utilisé pour définir le type de directive, et il peut s'agir de A
(attribut), C
(classe), E
(élément) et M
(composant), supposons que le nom de la directive est Doc
:
Type: Utilisation
A =
<div Doc></div>
C =
<div class="Doc"></div>
E =
<Doc data="book_data"></Doc>
M =
<!--directive:Doc -->
L'option restrict est généralement définie sur:
Voici le lien vers la documentation .
Élément n'est pas pris en charge dans IE8 prêt à l'emploi, vous devez faire quelques efforts pour que IE8 accepte les balises personnalisées.
L'utilisation d'un attribut par rapport à un élément présente l'avantage de pouvoir appliquer plusieurs directives au même nœud DOM. Ceci est particulièrement utile pour des éléments tels que les contrôles de formulaire où vous pouvez mettre en surbrillance, désactiver ou ajouter des étiquettes, etc. avec des attributs supplémentaires sans avoir à envelopper l'élément dans un groupe de balises.
Un des pièges que je connais est le problème IE avec les éléments personnalisés. Comme cité dans le docs :
3) vous n'utilisez pas les balises d'élément personnalisé telles que (utilisez plutôt la version de l'attribut)
4) si vous utilisez des balises d'élément personnalisé , vous devez suivre ces étapes pour rendre heureux les IE 8 et les versions antérieures
<!doctype html>
<html xmlns:ng="http://angularjs.org" id="ng-app" ng-app="optionalModuleName">
<head>
<!--[if lte IE 8]>
<script>
document.createElement('ng-include');
document.createElement('ng-pluralize');
document.createElement('ng-view');
// Optionally these for CSS
document.createElement('ng:include');
document.createElement('ng:pluralize');
document.createElement('ng:view');
</script>
<![endif]-->
</head>
<body>
...
</body>
</html>
Piège:
<my-directive></my-directive>
ne fonctionnera pas sur IE8 sans solution de contournement ( https://docs.angularjs.org/guide/ie )<div data-my-directive="ValueOfTheFirstParameter"></div>
Au lieu de cela:
<my-directive my-param="ValueOfTheFirstParameter"></my-directive>
Nous n'utilisons pas des éléments HTML personnalisés, car si cela est 2 faits.
Chaque directive par cadre tiers peut être écrite de deux manières:
<my-directive></my-directive>
ou
<div data-my-directive></div>
fait la même chose.
2 problèmes avec les éléments:
Utiliser des attributs.