我对角度指令的命名约定和角度规范化我的指令名称有问题
为了遵循现有项目中的一些命名约定,我想要添加角度,我需要用" _"来命名我的自定义指令。以这种方式:
app.directive("directive_name", function(...) {...});
遗憾的是,这样做似乎与Angular对指令名称的规范化方式相矛盾,因此这些指令被忽略,未编译,因此不会显示在屏幕上。
[问题]
是否有可能以这样的方式命名一个指令,以后我们可以在HTML中使用它,如下所示:
<body>
...
<my_directive></my_directive>
</body>
感谢您的时间和帮助!
答案 0 :(得分:9)
是的,这是可能的,但您需要在camelCase中声明它:
app.directive("directiveName", function(...) {...});
HTML
<my_directive></my_directive>
但imho - 更好,使用破折号
<my-directive></my-directive>
实际上,angular会将html中的指令名称规范化,如下所示:
x-
和data-
。:
,-
或_
- 分隔名称转换为camelCase。 答案 1 :(得分:5)
你的指令名称可以低,你必须像往常一样编写你的指令名称:
app.directive("yourDirectiveName", function(...) {...});
并且仅在您的代码中使用低破折号:
<your_directive_name></your_directive_name>
可能取决于您使用的angularjs的版本,但您的html标记名称和指令名称之间的匹配是由jqLite函数camelCase
https://github.com/angular/angular.js/blob/v1.0.x/src/jqLite.js#L106
正如您所看到的,由于使用了正则表达式,您可以使用低速划线:
SPECIAL_CHARS_REGEXP = /([\:\-\_]+(.))/g;