Je regarde actuellement cette vidéo de démarrage pourangular.js
À un certain moment (après 12'40" ), les états de haut - parleurs que les attributs ng-app
et data-ng-app=""
sont plus ou moins équivalent à l' intérieur du <html>
tag, et ainsi sont ng-model="my_data_binding
et data-ng-model="my_data_binding"
. Cependant , le haut - parleur dit le texte html serait validé par différents validateurs, selon lequel l' attribut est utilisé.
Pourriez-vous expliquer la différence entre les deux façons, ng-
préfixe contre data-ng-
préfixe?
Réponses:
Bonne question. La différence est simple - il n'y a absolument aucune différence entre les deux sauf que certains validateurs HTML5 vont lancer une erreur sur une propriété comme
ng-app
, mais ils ne lancent pas d'erreur pour tout ce qui est préfixédata-
, commedata-ng-app
.Donc, pour répondre à votre question, utilisez
data-ng-app
si vous souhaitez valider un peu votre code HTML.Fait amusant: vous pouvez également utiliser
x-ng-app
le même effet.la source
data-
etx-
. Pourquoi les règles de validation HTML ne peuvent-elles pas être modifiées pour accepter desng-
éléments?data-*
attributs sont le moyen d'étendre le HTML .De la documentation Angularjs
sur la base de la déclaration ci-dessus ci-dessous sont toutes des directives valides
1. ng-bind
2. ng: bind
3. ng_bind
4. data-ng-bind
5. x-ng-bind
la source
La différence réside dans le fait que les
data-*
attributs personnalisés sont valides dans la spécification HTML5 . Donc, si vous avez besoin que votre balisage soit validé, vous devez les utiliser plutôt que lesng
attributs.la source
Réponse courte:
ng-model
etdata-ng-model
sont identiques et équivalents!Pourquoi?
raison pour laquelle la spécification HTML5
data-
préfixe s'attend à ce que tout attribut personnalisé soit préfixé par .data-
raison de: les deux
ng-model
etdata-ng-model
sont identiques et équivalents.la source
Vous pouvez utiliser data-ng-, au lieu de ng-, si vous voulez rendre votre page HTML valide.
la source
si vous voulez manipuler du html ou des fragments html sur votre serveur avant de le servir au navigateur, vous voulez certainement utiliser des attributs data-ng-xxx au lieu de simplement ng-xxx.
la source