Я начал , чтобы узнать о AngularJS и смущает о том, что различия между ng-app
и data-ng-app
директивами.
Я начал , чтобы узнать о AngularJS и смущает о том, что различия между ng-app
и data-ng-app
директивами.
Ответы:
Большинство из этих ответов просто говорят о том, что делает шаблон допустимым HTML или HTML Validator Compliant , без объяснения того, что означают эти термины.
Я не знаю наверняка, но я предполагаю, что эти термины применяются к программам проверки HTML, которые сканируют ваш код на соответствие стандартам - вроде как lint. Они не распознаются ng-app
как действительный атрибут. Они ожидают, что атрибуты HTML не по умолчанию будут предварены
data-attribute_name_here
,
Таким образом, создатели AngularJS
создали альтернативные имена для своих директив, которые включают data-
перед ними так, чтобы программы валидатора HTML «полюбили» их.
Ни с точки зрения поведения во время выполнения, это просто разные стили директив именования, как описано здесь: http://docs.angularjs.org/guide/directive
Директивы имеют названия в верблюжьих клетках, такие как ngBind. Директива может быть вызвана путем перевода имени дела верблюда в дело змеи с помощью специальных символов:, - или _. При желании директива может иметь префикс x- или data-, чтобы сделать ее совместимой с валидатором HTML. Вот список некоторых из возможных имен директив: ng: bind, ng-bind, ng_bind, x-ng-bind и data-ng-bind.
Как вы можете видеть из этого, он data-
может быть использован для того, чтобы ваши HTML проходили тесты валидатора HTML /
Вы можете объявить угловое пространство имен <html xmlns:ng="http://angularjs.org" ng-app>
В современных браузерах нет никакой разницы, но в старых IE они не будут работать, если вы не объявите пространство имен XML, определяющее его.
Существует также разница в проверке в том, что ng-app
это недопустимый XHTML, и это приведет к тому, что ваша веб-страница не пройдет проверку HTML. Angular позволяет ставить перед директивами префикс data-
или x-
разрешать его проверку.
Вы можете использовать data-ng- вместо ng-, если хотите сделать HTML-код вашей страницы корректным.
Это выдаст ошибку
<div ng-app="">
<p>Input something in the input box:</p>
<p>Name: <input type="text" ng-model="name"></p>
<p ng-bind="name"></p>
</div>
Это не выдаст ошибку
<div data-ng-app="scope" data-ng-init="name='test'">
<p>Input something in the input box:</p>
<p>Name: <input type="text" data-ng-model="name"></p>
<p data-ng-bind="name"></p>
</div>
Основное различие между этими двумя терминами заключается в том, что data-ng-app проверяет HTML, а последний - нет. Функциональность остается прежней. Для получения дополнительной информации вы можете попробовать w3Validator.
Абсолютно нет никакой разницы между ними, за исключением того, что некоторые валидаторы HTML5 будут выдавать ошибку для свойства, такого как ng-app, но они не выдают ошибку для чего-либо с префиксом data-, например data-ng-app. Поэтому использование префикса данных с нашими угловыми директивами - это хорошо.
Даже вы можете использовать угловые директивы следующими способами: ng-bind, ng: bind, ng_bind, data-ng-bind, x-ng-bind