Я почав дізнаватися про AngularJS і я збентежений у тому, які відмінності між директивами ng-app
та data-ng-app
директивами.
Я почав дізнаватися про AngularJS і я збентежений у тому, які відмінності між директивами ng-app
та data-ng-app
директивами.
Відповіді:
Більшість із цих відповідей просто говорять про те, що шаблон робить HTML дійсним чи HTML-валідатором , не пояснюючи, що означають ТОЗІ терміни.
Я точно не знаю, але я здогадуюсь, що ці терміни застосовуються до програм перевірки HTML, які сканують ваш код на предмет дотримання стандартів - на зразок вказівки. Вони не визнаються 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. Кутовий дозволяє вам префіксувати його директиви за допомогою 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-додаток перевіряє HTML, тоді як останній не працює. Функціональність залишається тією ж. Для отримання додаткової інформації ви можете спробувати w3Validator.
Абсолютно немає різниці між цими двома, за винятком того, що певні валідатори HTML5 видадуть помилку у такій властивості, як ng-додаток, але вони не видають помилки для будь-якого префіксу даних, наприклад, data-ng-app. Тож добре використовувати префікс даних з нашими кутовими директивами.
Навіть ви можете використовувати кутові директиви нижче згаданими способами ng-bind, ng: bind, ng_bind, data-ng-bind, x-ng-bind