Je travaille dans une petite équipe, construisant dans AngularJS et essayant de maintenir certaines normes de base et les meilleures pratiques; d'autant plus que nous sommes relativement nouveaux avec Angular.
Ma question concerne les directives. Plus précisément, les restrict
options.
Certains d'entre nous utilisent restrict: 'E'
ainsi avoir <my-directive></my-directive>
dans le html.
D'autres utilisent restrict: 'A'
et ont <div my-directive></div>
dans le html.
Ensuite, bien sûr, vous pouvez utiliser restrict: 'EA'
et utiliser l'un ou l'autre des éléments ci-dessus.
Pour le moment, ce n'est pas un gros problème, mais lorsque ce projet est aussi grand que prévu, j'aimerais que quiconque le regarde comprenne facilement ce qui se passe.
Y a-t-il des avantages / inconvénients à l'attribut ou à l'élément pour faire les choses?
Y a-t-il des écueils que nous devrions connaître si vous choisissez un élément plutôt qu'un attribut?
la source
restrict sert à définir le type de directive, et il peut être
A
(Attribute),C
(Class),E
(Element) etM
(coMment), supposons que le nom de la directive soitDoc
:la source
L'option restrict est généralement définie sur:
Voici le lien de documentation .
la source
L'élément n'est pas pris en charge dans IE8 dès la sortie de la boîte, vous devez effectuer quelques travaux pour que IE8 accepte les balises personnalisées.
Un avantage de l'utilisation d'un attribut sur un élément est que vous pouvez appliquer plusieurs directives au même nœud DOM. Ceci est particulièrement pratique pour des choses comme les contrôles de formulaire où vous pouvez mettre en évidence, désactiver ou ajouter des étiquettes, etc. avec des attributs supplémentaires sans avoir à envelopper l'élément dans un tas de balises.
la source
L'un des pièges que je connais est le problème d'IE avec les éléments personnalisés. Comme cité dans la documentation :
la source
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 d' éléments HTML personnalisés, car si ces 2 faits.
Chaque directive par framework tiers peut être écrite de deux manières:
<my-directive></my-directive>
ou
<div data-my-directive></div>
fait la même chose.
la source
2 problèmes avec les éléments:
Utilisez des attributs.
la source
replace
attributtrue
?