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?

Ответ 1

AngularJS пытается сделать всех счастливыми!

Некоторые люди предпочитают использовать атрибуты данных, например data-abc-abc, я предполагаю, что валидаторы будут счастливы. Другие люди предпочитают использовать пространства имен, такие как abc:abc, а другие предпочитают использовать фактическое название директивы abcAbc. Или даже все шапки ABC_ABC. Или атрибуты расширения, такие как x-abc-abc.

AngularJS нормализует имя, используемое в HTML, чтобы попытаться охватить все эти случаи. data- и x- удаляются, остальные остаются на камне с :, - и _ в качестве границ слов. Это делает abcAbc из упомянутых выше случаев, который используется для поиска директивы, объявленной в JavaScript.

Все это называется нормализацией атрибута (US: нормализация атрибута) и можно найти в документации AngularJS и исходный код.

Ответ 2

Вы должны использовать имена, разделенные тире внутри html и camelCase, для соответствующего имени в директиве.

Как вы можете прочитать в документе: Angular использует имя-с-тире для имен атрибутов и camelCase для соответствующего имени директивы)

Здесь: http://docs.angularjs.org/tutorial/step_00