Я начал изучать AngularJS и смущен тем, что различия между директивами ng-app
и data-ng-app
.
В чем разница между ng-app и data-ng-app?
Ответ 1
Большинство из этих ответов просто говорят, что делает шаблон допустимым HTML или HTML Validator Compliant, не объясняя, что означают эти термины.
Я не знаю точно, но я предполагаю, что эти условия применимы к программам проверки HTML, которые сканируют ваш код для соответствия стандартам - вроде как lint. Они не распознают ng-app
как допустимый атрибут. Они ожидают, что атрибуты HTML нестандартного уровня будут предварительно помечены
data-attribute_name_here
.
Итак, создатели AngularJS
создали альтернативные имена для своих директив, которые включают в себя data-
перед ними, чтобы программы проверки HTML могли "понравиться" им.
Ответ 2
Нет в плане поведения во время выполнения, это только разные стили директив именования, описанные здесь: 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/
Ответ 3
Вы можете объявить пространство имен angular <html xmlns:ng="http://angularjs.org" ng-app>
Ответ 4
В современных браузерах нет никакой разницы, но в старых IE они не будут работать, если вы не объявите пространство имён XML, определяющее его.
Существует также различие валидации в том, что ng-app
недействителен XHTML и приведет к тому, что ваша веб-страница не сможет выполнить проверку HTML. Angular позволяет вам префикс своих директив с помощью data-
или x-
, чтобы он мог проверить.
Ответ 5
Вы можете использовать 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>
Ответ 6
Основное различие между этими двумя терминами заключается в том, что data-ng-app проверяет HTML, пока последний не работает. Функциональность остается неизменной. Для получения дополнительной информации вы можете попробовать w3Validator.
Ответ 7
Абсолютно нет никакой разницы между этими двумя, за исключением того, что некоторые валидаторы HTML5 будут вызывать ошибку для свойства, такого как ng-app, но они не выдают ошибку ни за что с префиксом данных, например, data-ng-app, Поэтому использование префикса данных с нашими директивами angular является хорошим.
Даже вы можете использовать директивы angular нижеуказанными способами ng-bind, ng: bind, ng_bind, data-ng-bind, x-ng-bind