76

我的代码:

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

4

3 回答 3

118

AngularJS 试图让每个人都开心!

有些人更喜欢使用数据属性,例如data-abc-abc,我假设让验证者满意。其他人更喜欢使用类似的名称空间abc:abc,而其他人更喜欢使用实际的指令名称abcAbc。甚至全部大写ABC_ABC。或扩展属性,如x-abc-abc.

AngularJS 规范化 HTML 中使用的名称以试图涵盖所有这些情况。data-x-被剥离,其余部分用:,-_作为单词边界。这是abcAbc从上面提到的情况中得出的,它用于查找在 JavaScript 中声明的指令。

这都称为属性规范化(美国:属性规范化),可以在AngularJS 文档源代码中找到。

于 2013-08-01T10:01:35.390 回答
25

您应该在 html 中使用破折号分隔的名称,并为指令中的相应名称使用 camelCase。

正如您在文档中所读到的:Angular 使用 name-with-dashes 作为属性名称,使用 camelCase 作为相应的指令名称)

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

于 2013-08-01T10:02:21.530 回答
0

好吧,指令名称必须全部小写,至少在 AngularJS 版本 1.4.9 中,否则我会收到 $inject can't be found 错误

于 2018-03-05T12:14:43.437 回答