AngularJS - 是否可以在指令名称中加下下划线?

时间:2014-06-20 08:52:08

标签: angularjs angularjs-directive naming-conventions


我对角度指令的命名约定和角度规范化我的指令名称有问题 为了遵循现有项目中的一些命名约定,我想要添加角度,我需要用" _"来命名我的自定义指令。以这种方式:

app.directive("directive_name", function(...) {...});
遗憾的是,这样做似乎与Angular对指令名称的规范化方式相矛盾,因此这些指令被忽略,未编译,因此不会显示在屏幕上。

[问题]
是否有可能以这样的方式命名一个指令,以后我们可以在HTML中使用它,如下所示:

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

感谢您的时间和帮助!

2 个答案:

答案 0 :(得分:9)

是的,这是可能的,但您需要在camelCase中声明它:

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

HTML

<my_directive></my_directive>

但imho - 更好,使用破折号

<my-directive></my-directive>

实际上,angular会将html中的指令名称规范化,如下所示:

  1. 从元素/属性的前面剥离x-data-
  2. :-_ - 分隔名称转换为camelCase。

答案 1 :(得分:5)

你的指令名称可以低,你必须像往常一样编写你的指令名称:

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

并且仅在您的代码中使用低破折号:

<your_directive_name></your_directive_name>

可能取决于您使用的angularjs的版本,但您的html标记名称和指令名称之间的匹配是由jqLit​​e函数camelCase

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

正如您所看到的,由于使用了正则表达式,您可以使用低速划线:

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