Pour éviter le " flash du contenu non compilé ", utilisez ng-bind au lieu de {{}}
ou utiliser ng-cloak :
<span ng-cloak ng-show="show">Hello, {{name}}!</span>
Si vous utilisez ng-cloak, et que vous ne chargez pas Angular.js dans la section head de votre HTML, vous devrez ajouter ceci à votre fichier CSS, et vous assurer qu'il se charge en haut de votre page :
[ng\:cloak], [ng-cloak], .ng-cloak { display: none; }
Notez que vous ne devez utiliser ces directives que sur votre page initiale. Le contenu qui est ajouté ultérieurement (par exemple, via ng-include, ng-view, etc.) sera compilé par Angular avant le rendu par le navigateur.
Existe-t-il un meilleur moyen de charger des données que ng-show / hide, dans lequel seule la section pertinente est chargée dans le DOM.
Quelques alternatives à ng-show/ng-hide sont ng-include , ng-switch et (depuis la v1.1.5) ng-if :
<div ng-include src="someModelPropertySetToThePartialYouWantToLoadRightNow"></div>
Voir aussi https://stackoverflow.com/a/12584774/215945 pour un exemple de ng-switch fonctionnant avec ng-include.
Notez que ng-switch et ng-if ajoutent/suppriment des éléments DOM, tandis que ng-show/hide ne modifie que le CSS (si cela vous importe).