2013-08-01 28 views
71

我的代码:Angular指令名称:只允许小写字母?

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指令有特殊的命名规则吗?

回答

116

AngularJS试图让每个人都开心!

有些人喜欢使用的数据属性,如data-abc-abc,我想保持验证高兴。其他人更喜欢使用名称空间,如abc:abc,而其他人更喜欢使用实际的指令名称abcAbc。甚至全部大写ABC_ABC。或者扩展属性如x-abc-abc

AngularJS标准化HTML中使用的名称,试图涵盖所有这些情况。 data-x-被剥离,剩余部分与驼峰:-_作为单词边界。这使得abcAbc来自上面提到的用于查找JavaScript中声明的指令的情况。

这就是所谓的属性归一化(US:属性归一化),可以在AngularJS documentationsource code中找到。

+6

谢谢!我把文档看作是“你可以做到这一点”,但显然并非如此。我很惊讶,目前为止只有10个赞助商。 – spikeheap

+0

这也是内嵌Web组件命名空间: http://webcomponents.github.io/articles/web-components-best-practices/ –

+1

我改变了最后一段用的是“正常化”的美国英语形式,而不是英国的“规范化”,因为Angular文档使用英文拼写并在英式拼写中搜索它们不会返回任何结果。 –

23

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

正如你可以在文档阅读:角使用名称,用破折号属性名称和驼峰为相应的指令名)

这里:http://docs.angularjs.org/tutorial/step_00

+6

它可能是推荐的方式。但我讨厌这一点,因为在所有文件中搜索相应的指令变得更乏味。特别是对于有多个词的指令。 – ColacX

0

好,指令名有至少在AngularJS 1.4.9版本中,否则我会得到一个$注入无法找到的错误

相关问题