我的代码:
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指令有特殊的命名规则?
AngularJS试图让所有人开心!
有些人喜欢使用数据属性,例如data-abc- abc,我想让验证者满意。其他人喜欢使用像这样的名称空间abc:abc,而其他人则喜欢使用实际的指令名称abcAbc。甚至所有大写ABC_ABC。或扩展属性,例如x-abc- abc。
data-abc- abc
abc:abc
abcAbc
ABC_ABC
x-abc- abc
AngularJS标准化了HTML中使用的名称,以尝试涵盖所有这些情况。data-并被x-剥离,其余的都用:,-和_作为单词边界用驼峰式表示。这是abcAbc从上述情况开始的,这些情况用于查找JavaScript中声明的指令。
data-
x-
:
-
_
这全部称为属性规范化(美国:属性规范化),可以在AngularJS文档和源代码中找到。