2013-05-29 1 views
2

J'ai quelques éléments que je veux montrer seulement l'auteur du document.angularjs scope fixations et rootscope

Je peux faire quelque chose comme ceci:

<div ui-show="currentUser == doc.user">Edit</div> 
<div ui-show="currentUser == doc.user">Review</div> 

Ce qui est bien, mais parce que dans mon code de production ui-spectacle est beaucoup plus longue que cet exemple, je ne veux pas copier-coller partout que je besoin de ça.

Je souhaite définir une seule variable qui sera mise à jour dynamiquement lorsque les utilisateurs se connecteront et sortiront ou que le document sera mis à jour avec de nouveaux/différents utilisateurs.

<div ui-show="isUser">Edit</div> 
<div ui-show="isUser">Review</div> 

Répondre

2

J'ai trouvé que je pouvais faire isUser dans une fonction.

<div ui-show="isUser()">Edit</div> 
<div ui-show="isUser()">Review</div> 

Et d'écrire les conditions dans le contrôleur.

0

Vous avez deux options pour résoudre ce problème:

1) Introduire un contrôleur "global" ou "parent" à votre application. Cela contiendra votre variable d'oscilloscope isUser que vous pouvez définir à partir de n'importe quel contrôleur situé sous ce contrôleur. Ce qui signifie que vous pouvez avoir un LogInController qui gère la déconnexion/entrée et peut définir cette variable via $scope.isUser = false.

Voici un violon avec un exemple de ce que cela pourrait ressembler: http://jsfiddle.net/digitalzebra/MrQrX/

2) charge différents modèles ou inclut en fonction de si oui ou non l'utilisateur est connecté/off. lorsque vous utilisez <ng-include src="partialTemplate">, l'attribut src est en fait une expression. Ainsi, vous pouvez basculer quel modèle est réellement chargé en fonction de la valeur de cette expression. Vous pouvez ensuite définir la valeur dans votre contrôleur et changer dynamiquement quel modèle est chargé: $scope.partialTemplate = "loggedOff.html"

Questions connexes