Obecnie patrzę na ten film instruktażowy dotyczący początkuangular.js
W pewnym momencie (po 12'40 ") mówca oświadcza, że atrybuty ng-app
i data-ng-app=""
są mniej więcej równoważne wewnątrz <html>
znacznika, podobnie jak ng-model="my_data_binding
i data-ng-model="my_data_binding"
. Jednak mówca mówi, że HTML zostanie sprawdzony 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 tymi dwoma sposobami, ng-
prefiks przed data-ng-
prefiksem?
Odpowiedzi:
Dobre pytanie. Różnica jest prosta - nie ma absolutnie żadnej różnicy między tymi dwoma, z wyjątkiem tego, że niektóre walidatory HTML5 rzucają błąd na właściwość taką jak
ng-app
, ale nie zgłaszają błędu dla czegoś z prefiksemdata-
, jakdata-ng-app
.Aby odpowiedzieć na twoje pytanie, użyj,
data-ng-app
jeśli chcesz, aby weryfikacja kodu HTML była nieco łatwiejsza.Ciekawostka: możesz użyć
x-ng-app
tego samego efektu.źródło
data-
ix-
. Dlaczego nie można zmienić reguł sprawdzania poprawności HTML, aby akceptowaćng-
różne elementy?data-*
atrybuty są sposobem na rozszerzenie HTML .Z dokumentacji Angularjs
na podstawie powyższego oświadczenia poniżej wszystkie są ważnymi dyrektywami
1. ng-bind
2. ng: bind
3. ng_bind
4. data-ng-bind
5. x-ng-bind
źródło
Różnice polegają na tym, że niestandardowe
data-*
atrybuty są prawidłowe w specyfikacji HTML5 . Dlatego jeśli chcesz sprawdzić poprawność znaczników, powinieneś ich używać zamiastng
atrybutów.źródło
Krótka odpowiedź:
ng-model
idata-ng-model
są takie same i równoważne!Czemu?
powód:
data-
przedrostekSpecyfikacja HTML5 oczekuje, że dowolny niestandardowy atrybut będzie poprzedzony
data-
.Powodem: zarówno
ng-model
idata-ng-model
są takie same i równoważne.źródło
Możesz użyć data-ng-, zamiast ng-, jeśli chcesz, aby strona HTML była poprawna.
źródło
jeśli chcesz manipulować fragmentami HTML lub HTML na swoim serwerze przed udostępnieniem go w przeglądarce, zdecydowanie chcesz używać atrybutów data-ng-xxx zamiast tylko atrybutów ng-xxx.
źródło