ng-app vs. data-ng-app, jaka jest różnica?

Aktualnie Oglądam Ten startowy film instruktażowy dla angular.js

W pewnym momencie (po 12'40") mówca stwierdza, że atrybuty ng-app i data-ng-app="" są mniej lub bardziej równoważne wewnątrz znacznika <html>, podobnie jak ng-model="my_data_binding i data-ng-model="my_data_binding". Jednak mówca mówi, że html będzie sprawdzany za pomocą różnych walidatorów, w zależności od tego, który atrybut jest używany.

Czy mógłbyś wyjaśnić różnicę między prefiksem ng- A prefiksem data-ng-?

Author: Stephane Rolland, 2013-05-16

6 answers

Dobre pytanie. Różnica jest prosta - nie ma absolutnie żadnej różnicy między tymi dwoma , z wyjątkiem , że niektóre walidatory HTML5 rzucają błąd na właściwość taką jak ng-app, ale nie rzucają błędu dla niczego poprzedzonego data-, Jak data-ng-app.

Aby odpowiedzieć na twoje pytanie, użyj data-ng-app, jeśli chcesz, aby Walidacja kodu HTML była nieco łatwiejsza.

Ciekawostka: Możesz również użyć x-ng-app do tego samego efektu.

 391
Author: Code Whisperer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-02 18:24:26

From Angularjs Documentation

Angular normalizuje znacznik elementu i nazwę atrybutu w celu określenia które elementy pasują do których dyrektyw. Zazwyczaj odnosimy się do dyrektywy przez ich znormalizowaną nazwę camelCase uwzględniającą wielkość liter (np. ngModel). Ponieważ jednak HTML jest niewrażliwy na wielkość liter, odnosimy się do dyrektywy w DOM przez małe litery, zazwyczaj za pomocą dash-delimitowane atrybuty na elementach DOM (np. ng-model).

Proces normalizacji jest jak "follows": {]}

Usuń x-i dane-z przodu elementu / atrybutów. Konwertuj nazwę:, -, lub _ - rozdzieloną na camelCase. Oto kilka odpowiedników przykłady elementów pasujących do ngBind:

Na podstawie powyższego stwierdzenia poniżej wszystkie są poprawnymi dyrektywami

1. ng-bind
2. ng: bind
3. ng_bind
4. data-ng-bind
5. x-ng-bind

 63
Author: srinu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-20 20:55:37

Różnice polegają na tym, że niestandardowe atrybuty data-*są ważne w specyfikacji HTML5. Jeśli więc chcesz zweryfikować swoje znaczniki, powinieneś używać ich zamiast atrybutów ng.

 28
Author: Manu Letroll,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-16 14:18:46

Krótka Odpowiedź:

ng-model i data-ng-model są takie same i równoważne!


Dlaczego?
  1. Uzasadnienie: data- przedrostek
    Specyfikacja HTML5 oczekuje, że każdy niestandardowy atrybut będzie poprzedzony przez data-.

  2. Powód: zarówno ng-model jak i data-ng-model są takie same i równoważne.

Dokument AngularJS-Normalizacja

Kątowa normalizuje znacznik elementu i nazwa atrybutu określająca, które elementy pasują do których dyrektyw. Zazwyczaj odsyłamy do dyrektyw z uwzględnieniem wielkości liter camelCase znormalizowana nazwa(np. ngModel). Jednakże, ponieważ HTML jest niewrażliwy na wielkość liter, odsyłamy do dyrektyw w DOM za pomocą małych liter, Zwykle używając atrybutów rozdzielanych myślnikami na elementach DOM (np. ng-model).

Proces normalizacji wygląda następująco:
1. Pasek x- i data- z przodu elementu / atrybutów.
2. Convert the :, -, or _ - Nazwa ograniczona do camelCase.

na przykład
następujące formy są równoważne i odpowiadają dyrektywie 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>
 13
Author: Eddy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-31 08:30:24

Możesz użyć data-ng-, zamiast ng-, jeśli chcesz, aby Twoja strona HTML była poprawna.

 2
Author: NNaseet,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-13 13:29:02

Jeśli chcesz manipulować html lub fragmentami html na swoim serwerze przed podaniem go do przeglądarki, zdecydowanie chcesz używać atrybutów data-ng-xxx zamiast tylko atrybutów ng-xxx.

  1. sprawia, że Twój html jest poprawny, co oznacza, że może być używany przez parsery html (oparte na serwerze), takie jak domdocument (php) lub inne. Te parsery często zawodzą na niezbyt dobrze uformowanym html.
  2. Angular normalizuje atrybut, ale pamiętaj, że to na kliencie, nie na serwerze.
 1
Author: Kees Hessels,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-04 21:20:46