J'ai récemment examiné le code d'une application Web construite avec angular et j'ai trouvé qu'elle avait été écrite avec la ng-app="myModule"
directive placée sur l' <body>
étiquette. Lors de l'apprentissage d'angular, je ne l'ai jamais vu utilisé que sur l' <html>
étiquette, comme recommandé par les documents angular ici , ici et dans leur tutoriel .
J'ai exploré cela un peu par moi-même et j'ai trouvé des questions SO, notamment celle-ci et de même celle-ci , qui traitent du chargement de plusieurs modules pour une page. Cependant, cette technique est différente de mon cas, car elle implique de placer ng-app sur des éléments dans le corps et d'utiliser le bootstrap manuel pour exécuter deux applications angulaires en même temps.
Pour autant que je sache, il n'y a aucune différence au moment de l'exécution entre une application avec ng-app
on <html>
ou <body>
. Si je comprends bien, ng-app
désigne la racine d'une application angulaire, donc le placement de celle-ci sur le champ <body>
serait coupé <head>
de la portée angulaire, mais je ne peux pas penser à une manière majeure que cela affecte les choses. Ma question est donc la suivante: quelle est la différence technique entre placer ng-app
sur l'une de ces balises au lieu de l'autre?
Je faisais partie d'une équipe travaillant sur une application héritée et j'ai trouvé préférable d'utiliser la balise ng-app dans un div qui est utilisé comme wrapper pour isoler le nouveau code du code hérité.
Nous avons découvert cela en travaillant sur l'application qui reposait fortement sur jqGrid et Dojo.
Lorsque nous avons ajouté ng-app à la balise head, le site a explosé, mais lorsque nous avons utilisé un wrapper, nous pouvions utiliser Angular sans problème.
la source
AngularJS démarrera la première ng-app qu'il trouve! C'est tout. Si vous possédez plusieurs ng-app, il ne traitera que la première. Si vous souhaitez amorcer un autre élément, utilisez angular.bootstrap ()
La valeur de l'attribut ng-app est un module qui a été créé à l'aide de:
Un module définit comment angular va démarrer car nous n'avons pas de méthode main () contrairement aux autres langages de programmation. Si la valeur de ng-app est vide, il utilise par défaut 'ng', le module par défaut.
On dit qu'il est légèrement plus rapide car angular traitera tous les éléments à l'intérieur de l'élément où se trouvait ng-app. Mais je doute un peu en partie car la différence sera à peine perceptible, à moins que vous n'ayez un DOM très très volumineux.
Si vous voulez des exemples ici: http://noypi-linux.blogspot.com/2014/07/angularjs-tutorials-understanding.html
la source