В настоящее время я смотрю этот учебник для начинающих для angular.js
В какой-то момент (после 12'40 ") динамик заявляет, что атрибуты ng-app
и data-ng-app=""
более или менее эквивалентны внутри тега <html>
, а также ng-model="my_data_binding
и data-ng-model="my_data_binding"
. Однако говорящий говорит, что html будет проверяться с помощью различных валидаторов, в зависимости от того, какой атрибут используется.
Не могли бы вы объяснить разницу между двумя способами, префикс ng-
от префикса data-ng-
?
ng-app
, но они не выдают ошибку ни за что с префиксом data-
, как data-ng-app
.
Итак, чтобы ответить на ваш вопрос, используйте data-ng-app
, если вы хотите упростить проверку своего HTML.
Забавный факт: вы также можете использовать x-ng-app
для того же эффекта.
data-
и x-
. Почему нельзя изменить правила проверки HTML, чтобы они принимали ng-
вещи?
Angular нормализует тег элемента и имя атрибута для определения какие элементы соответствуют этим директивам. Обычно мы ссылаемся на директивы по их регистрозаменному имени camelCase с учетом регистра (например, ngModel). Однако, поскольку HTML нечувствителен к регистру, мы ссылаемся на директивы в DOM по нижним регистрам, обычно используя атрибуты с разделителями тире на элементах DOM (например, ng-model).
Процесс нормализации выглядит следующим образом:
Разделить x- и данные - с передней стороны элемента/атрибутов. Преобразуйте имя:, - или _-delimited в camelCase. Вот несколько эквивалентов примеры элементов, которые соответствуют ngBind:
основанный на приведенном выше описании ниже, являются действительными директивами
1. ng-bind
2. ng: bind
3. ng_bind
4. data-ng-bind
5. x-ng-bind
Различия заключаются в том, что пользовательские атрибуты data-*
действительны в спецификации HTML5. Поэтому, если вам нужна ваша разметка для проверки, вы должны использовать их, а не атрибуты ng
.
ng-model
и data-ng-model
являются одинаковыми и эквивалентными!
причина для: data-
префикса
Спецификация HTML5 ожидает, что любой пользовательский атрибут будет префикс data-
.
причина для: как ng-model
, так и data-ng-model
одинаковы и эквивалентны.
Документ AngularJS - нормализация
Angular нормализует тег элемента и имя атрибута, чтобы определить, какие элементы соответствуют этим директивам. Обычно мы ссылаемся на директивы с учетом нормального имени camelCase своего регистра, например (ngModel
). Однако, поскольку HTML не чувствителен к регистру, мы ссылаемся на директивы в DOM по строчным формам, как правило, используя атрибуты тире с разделителями на элементах DOM (например,ng-model
).
Процесс нормализации выглядит следующим образом:
1. Разделитеx-
иdata-
с передней стороны элемента/атрибутов.
2. Преобразуйте:
,-
или_
-delimited name вcamelCase
.
Например
следующие формы эквивалентны и соответствуют директиве ngBind:
<div ng-controller="Controller">
Hello <input ng-model='name'> <hr/>
<span ng-bind="name"></span> <br/>
<span ng:bind="name"></span> <br/>
<span ng_bind="name"></span> <br/>
<span data-ng-bind="name"></span> <br/>
<span x-ng-bind="name"></span> <br/>
</div>
Вы можете использовать data-ng- вместо ng-, если вы хотите сделать свой HTML-код действительным.
если вы хотите манипулировать html или html-фрагментами на своем сервере перед его службой в браузер, вы определенно хотите использовать атрибуты data-ng-xxx вместо атрибутов ng-xxx.