В чем разница между ng-app и data-ng-app?

Я начал изучать AngularJS и смущен тем, что различия между директивами 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