My code:
app.directive('abcabc', function (){ alert('directive');}); // working
but
app.directive('abcAbc', function (){ alert('directive');}); // not working !
app.directive('abc-abc', function (){ alert('directive');}); // not working !
Am I doing wrong? Or there are special naming rules for Angular directive?
AngularJS attempts to make everyone happy!
Some people prefer to use data attributes, like data-abc-abc
, I assume to keep validators happy. Other people prefer to use namespaces like abc:abc
, and others prefer to use the actual directive name abcAbc
. Or even all caps ABC_ABC
. Or extension attributes like x-abc-abc
.
AngularJS normalises the name used in HTML to attempt to cover all of these cases. data-
and x-
are stripped, the remainder camelcased with :
, -
and _
as word boundaries. This makes abcAbc
from the cases mentioned above, which is used to look up the directive declared in JavaScript.
This is all called attribute normalisation (US: attribute normalization) and can be found in the AngularJS documentation and source code .
You should use dash-separated names inside the html and camelCase for the corresponding name in the directive.
As you can read on the doc: Angular uses name-with-dashes for attribute names and camelCase for the corresponding directive name)
好吧,指令名称必须全部小写,至少在AngularJS版本1.4.9中,否则我得到一个$ inject无法找到错误
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.