Mon code:
app.directive('abcabc', function (){ alert('directive');}); // working
mais
app.directive('abcAbc', function (){ alert('directive');}); // not working !
app.directive('abc-abc', function (){ alert('directive');}); // not working !
Est-ce que je me trompe? Ou existe-t-il des règles de nommage spéciales pour la directive angulaire?
AngularJS tente de rendre tout le monde heureux!
Certaines personnes préfèrent utiliser des attributs de données, tels que data-abc-abc
, afin de satisfaire les validateurs. D'autres personnes préfèrent utiliser des espaces de noms tels que abc:abc
, tandis que d'autres préfèrent utiliser le nom de directive actuel abcAbc
. Ou même en majuscules ABC_ABC
. Ou des attributs d'extension tels que x-abc-abc
.
AngularJS normalise le nom utilisé en HTML pour tenter de couvrir tous ces cas. data-
et x-
sont supprimés, le reste étant camelcased avec :
, -
et _
en tant que limites de Word. Cela rend abcAbc
parmi les cas mentionnés ci-dessus, qui est utilisé pour rechercher la directive déclarée en JavaScript.
Tout cela s'appelle normalisation d'attribut (US: normalisation d'attribut) et se trouve dans la documentation AngularJS et le code source .
Vous devez utiliser des noms séparés par des tirets dans le code HTML et camelCase pour le nom correspondant dans la directive.
Comme vous pouvez le lire sur la doc: Angular utilise name-with-dashes pour les noms d'attribut et camelCase pour le nom de la directive correspondante)
Eh bien, le nom de la directive doit être tout en minuscule, du moins dans AngularJS version 1.4.9, sinon je reçois une erreur $ inject introuvable.