angularjs - example - scope emit('' load '')
¿Cómo puedo borrar todos los valores AngularJS $ scope y $ rootScope dentro de una sola función? (2)
Necesito borrar todos los valores de $scope
mientras realizo algunas operaciones.
Por ejemplo: si hago clic en el botón "Signout"
para redireccionar a la página de "signin"
inicio de sesión "signin"
, entonces deben borrarse todos los valores de $ scope o $ rootScope en la sesión.
¿Cómo puedo conseguir esto?
Puedes hacer lo siguiente:
$rootScope = $rootScope.$new(true);
$scope = $scope.$new(true);
La función $new
está creando un nuevo ámbito heredando las variables del padre. true
impide la herencia.
Pero este no es el enfoque correcto, porque si usa lo anterior, debe iniciar manualmente las funciones de los controladores y volver a crear el árbol de ámbitos.
Sin embargo, esto podría ser útil, donde la idea es almacenar los datos inicializados que se almacenan en algunas variables y luego, cuando se asignan copiados a las variables mostradas.
La solución correcta es borrar manualmente cada propiedad en cada alcance en el evento de cierre de sesión como este: Evento de cierre de sesión:
$rootScope.$emit("logout");
Atrapando el evento:
$rootScope.$on("logout", function(){
$rootScope.myData = undefined;
});
O como se sugiere en los comentarios, para usar un servicio y luego limpiarlo.
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];
}
}