AngularJS - Poignée de fragments répétés comme en-Tête et Pied de page
J'ai essayé de mettre en œuvre l'en-tête /pied de page dans un Angular JS App. Je pensais à de l'ajout de ces ng-à inclure dans les principaux index.html. Cependant, cela aurait fonctionné si l'en-tête et pied de page sont des pages statiques. Mon cas est un peu différent... Dans la page de Login sans en-tête /pied de page est indiqué. Autres pages en fonction de si vous êtes connecté ou non, vous devez afficher "Bienvenue utilisateur [ déconnexion]" ou "Bienvenue invité sur [ connexion ]".
Je enregistrer les informations de connexion dans la rootScope ainsi que de définir une valeur de type boolean $rootScope.isLoggedIn sur connexion. Le plus gros problème semble être que l'ensemble de la ng-inclure n'est pas actualisé sur une fermeture de session. Donc divs avec ng-afficher, de masquer les directives ne seront pas masquer/afficher sur le changement. Quelqu'un a suggéré d'utiliser ng-commutateur - il également se comporte de la même manière.
Si je déplace le code d'en-tête à l'intérieur de différents points de vue, alors tout est bien.
Une question similaire est ici: Actualisation de la page d'en-tête dans angularjs
Pourriez-vous utiliser ng-controller directive à donner les en-têtes/pieds de page d'un contrôleur d'accès à votre $rootScope et ajouter un peu de masquer/afficher la logique?
BTW, mettre des trucs sur $rootScope est équivalent à globals dans la "plaine" de javascript et pas une très bonne pratique, je vous recommande d'utiliser un service de stockage de vos "isLoggedIn".
thx. J'ai commencé l'application et j'ai déjà un LoginService... je devrais le renommer en UserService et devrait l'avoir.
OriginalL'auteur Hari Gangadharan | 2013-10-10
Vous devez vous connecter pour publier un commentaire.
Utiliser un contrôleur dans l'en-tête/pied de page, comme ivarni suggéré. Un exemple à partir d'un (expérimental) application de mon propre:
Dans le index.html, l'en-tête affiche généré dynamiquement, un menu connexion/déconnexion etc:
La
NavbarCtrl
construit le champ d'application approprié pour laapp/main/navbar.html
modèle. Le modèle se présente comme suit (en tenant compte de vos besoins et de détails inutiles supprimés):De sorte que la totalité de la majoration est caché en fonction de la
showHeader
portée variable. Il crée le menu dynamiquement (menuEntries
). Et selonuserData.loggedIn
, la Connexion/Déconnexion message.Encore une fois il ne fonctionne pas après le déplacement de isLoggedIn de rootScope!!! Question mise à jour...
Pourriez-vous reproduire le problème dans un Violon? C'est la seule façon de l'aider.
J'ai remarqué que vous avez des préfixes de " x " sur votre angulaire attributs. Pourquoi avez-vous
x-ng-controller
etx-ng-repeat
au lieu deng-controller
etng-repeat
? Est-il un préfixe personnalisé? Est-il avantageux? MerciStrictement (strictement) parlant, ces attributs ne sont pas valides selon la DTD HTML. E. g. Eclipse affiche des avertissements à ceux-ci. Cependant la DTD précise que tout attribut avec le préfixe
x-
oudata-
est légal. Ainsi écritx-ng-if
au lieu deng-if
vous permet d'économiser quelques mises en garde sur certains outils. J'utilise rarement cette pratique plus (à partir de 2015 - cette réponse est de 2013).OriginalL'auteur Nikos Paraskevopoulos