Je dois effacer tous les $scope
valeurs lors de l'exécution de certaines opérations.
Par exemple: si je clique sur "Signout"
bouton pour rediriger vers "signin"
page, toutes les valeurs $ scope ou $ rootScope de la session doivent être effacées.
Comment puis-je atteindre cet objectif?
Vous pouvez effectuer les opérations suivantes:
$rootScope = $rootScope.$new(true);
$scope = $scope.$new(true);
La fonction $new
crée une nouvelle portée héritant des variables du parent. true
empêche l'héritage.
Mais ce n'est pas la bonne approche, car si vous utilisez la chose ci-dessus, vous devez bootstrap les fonctions des contrôleurs manuellement et recréer l'arborescence des étendues.
This pourrait être utile cependant, où l'idée est de stocker les données initialisées sont stockées dans certaines variables puis, une fois affectées copiées dans les variables affichées.
La bonne solution consiste à effacer manuellement chaque propriété de chaque étendue de l'événement de déconnexion, comme ceci: Événement de déconnexion:
$rootScope.$broadcast("logout");
Attraper l'événement:
$rootScope.$on("logout", function(){
$rootScope.myData = undefined;
});
Ou comme suggéré dans les commentaires, utiliser un service puis être nettoyé.
You not want delete scope
var authScope =['authLogo','currentPath','pageTitle','app'];
for (var prop in $rootScope) {
if (prop.substring(0,1) !== '$') {
if(authScope.indexOf(prop) ==-1)
delete $rootScope[prop];
}
}