Соглашения о названии в директивах angualrjs

Это работает для меня (пример проверки на стороне сервера):

AngularJS: интеграция с проверкой на стороне сервера

Но я решил задать дополнительный вопрос.

В этом примере мы используем директиву unique-email:

<input type="email" ng-model="userEmail" name="userEmail" required unique-email/>

Но при создании директивы мы используем uniqueEmail:

app.directive('uniqueEmail', function($http) { ..

Почему? Связано ли это так называемые соглашения/правила в именах? Как angular знает, где искать и как подключать друг к другу?

Мне просто интересно, потому что, когда я использовал <input ... required uniqueEmail, это не сработало. Пока я не набрал "unique-email"

То же самое, если я набираю:

app.directive('unique-email', function($http) {

Он не будет работать, пока я не наберу uniqueEmail

Таким образом, нет возможности использовать одно имя стиля при использовании директивы use и определять его.

Ответ 1

От здесь:

Директивы имеют имена с верблюдом, такие как ngBind. Директива может быть вызывается путем перевода имени случая верблюда в случай змеи с этими специальные символы:, -, или _. При желании директива может быть с префиксом x- или data-, чтобы сделать его совместимым с HTML-валидатором.

Итак, да, это соглашение angular.

Ответ 2

В html-конгрессе используется только нижний регистр для тегов и атрибутов (отчасти потому, что HTML5 не чувствителен к регистру. class= "- это то же самое, что и class=" "). Angular не хотел ограничивать ваши имена директив нижним регистром. Таким образом, он позволяет использовать верхний регистр в Angular, а затем обрабатывать их имена в стандартном для вас змеевом корпусе html.

Таким образом, вы получаете гибкость в отношении имен и улучшенную читаемость в Angular, оставаясь при этом совместимыми с стандартами именования html.

Обратите внимание: если вы используете только имена нижних регистров, вам не придется беспокоиться о преобразовании имени. Конечно, это, скорее всего, будет зависеть от читаемости вашего кода Angular.