Angular指令名称:只允许小写字母?

时间:2013-08-01 09:59:12

标签: angularjs angularjs-directive

我的代码:

app.directive('abcabc', function (){ alert('directive');}); // working

app.directive('abcAbc', function (){ alert('directive');}); // not working !
app.directive('abc-abc', function (){ alert('directive');}); // not working !

我做错了吗? 或者Angular指令有特殊的命名规则吗?

3 个答案:

答案 0 :(得分:119)

AngularJS试图让每个人都开心!

有些人更喜欢使用数据属性,例如data-abc-abc,我假设让验证员感到高兴。其他人更喜欢使用abc:abc这样的名称空间,而其他人则更喜欢使用实际的指令名abcAbc。甚至全部大写ABC_ABC。或者扩展属性,例如x-abc-abc

AngularJS将HTML中使用的名称规范化,以尝试涵盖所有这些情况。 data-x-被删除,其余部分来自:-_作为字边界。这使得abcAbc来自上述案例,用于查找在JavaScript中声明的指令。

这称为属性规范化(US:属性规范化),可以在AngularJS documentationsource code中找到。

答案 1 :(得分:25)

您应该在html和camelCase中使用以短划线分隔的名称作为指令中的相应名称。

正如您可以阅读文档: Angular使用name-with-dashes作为属性名称,camelCase使用相应的指令名称

此处:http://docs.angularjs.org/tutorial/step_00

答案 2 :(得分:0)

好吧,指令名称必须全部小写,至少在AngularJS版本1.4.9中,否则我得到一个$ inject就找不到错误