web-dev-qa-db-fra.com

Nom de la directive angulaire: seules les lettres minuscules sont autorisées?

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?

74
Zach

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 .

119
Steve Klösters

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)

Ici: http://docs.angularjs.org/tutorial/step_00

25
AlwaysALearner

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.

0
Rob