/ / AngularJS - est-il possible d'avoir un soulignement dans le nom de la directive? - angularjs, angularjs-directive, conventions de nommage

AngularJS - est-il possible d'avoir un soulignement dans le nom de la directive? - angularjs, angularjs-directive, conventions de nommage


J'ai un problème avec la convention de nommage des directives angulaires et la façon dont angulaire normalise les noms de mes directives.
Afin de suivre certaines conventions de dénomination dans un projet existant, auquel je souhaite ajouter angular, je dois nommer ma directive custom avec "_" de la manière suivante:

app.directive("directive_name", function(...) {...});

Cela semble malheureusement contredire le "mode de normalisation du nom de la directive" utilisé par Angular. Par conséquent, ces directives sont ignorées, non compilées et donc non affichées à l'écran.

[Question]
Est-il possible de nommer une directive de manière à pouvoir l'utiliser ultérieurement dans le code HTML comme suit:

<body>
...
<my_directive></my_directive>
</body>

Merci pour votre temps et votre aide!

Réponses:

5 pour la réponse № 1

vous pouvez avoir un tiret bas sur votre nom de directive, il vous suffit d'écrire votre nom de directive comme toujours:

app.directive("yourDirectiveName", function(...) {...});

et que seulement dans votre code utilisez le tiret bas:

<your_directive_name></your_directive_name>

Peut-être dépend de la version de angularjs que vous utilisez mais la correspondance entre le nom de votre balise html et le nom de la directive est faite par la fonction jqLite camelCase

https://github.com/angular/angular.js/blob/v1.0.x/src/jqLite.js#L106

comme vous pouvez le constater, vous pouvez utiliser un tiret bas en raison de l’expression rationnelle utilisée:

SPECIAL_CHARS_REGEXP = /([:-_]+(.))/g;

9 pour la réponse № 2

Oui c'est possible, mais vous devez le déclarer dans camelCase:

app.directive("directiveName", function(...) {...});

html

<my_directive></my_directive>

mais à mon avis - mieux, utilisez des tirets

<my-directive></my-directive>

En fait, angular normalisera les noms de directive à partir de HTML comme suit:

  1. Bande x- et data- de l'avant de l'élément / attributs.
  2. Convertir le :, -, ou _Nom délimité dans camelCase.