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?
The restrict option is typically set to: 'A' - only matches attribute name. 'E' - only matches element name. 'C' - only matches class name.
The three types of directives in Angular are attribute directives, structural directives, and components.
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)
Here: http://docs.angularjs.org/tutorial/step_00
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With