Соглашения о названии в директивах 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.