page navigationend change javascript angularjs javascript-events angularjs-scope angular-ui

javascript - navigationend - disparar evento angularjs cuando la pestaña/navegador está cerrado



title angular 6 (1)

De los documentos angulares:

$ destroy ();

Elimina el alcance actual (y todos sus elementos secundarios) del ámbito principal. La eliminación implica que las llamadas a $ digest () ya no se propagarán al alcance actual y sus hijos. La eliminación también implica que el alcance actual es elegible para la recolección de basura.

El $ destroy () suele ser utilizado por directivas como ngRepeat para gestionar el desenrollado del ciclo.

Justo antes de que se destruya un ámbito, se difunde un evento $ destroy en este ámbito. El código de la aplicación puede registrar un controlador de eventos $ destroy que le dará la oportunidad de realizar cualquier limpieza necesaria.

Tenga en cuenta que, en AngularJS, también hay un evento $ destroy jQuery, que se puede utilizar para limpiar los enlaces DOM antes de que se elimine un elemento del DOM.

Esto solo maneja la situación en la que se está destruyendo el propio alcance, que no parece ocurrir cuando la pestaña / navegador está cerrado.

Tendrá que usar métodos de nivel inferior onunload y onbeforeunload events para manejar esta situación, aquí hay otra publicación que puede serle útil:

javascript detectar navegador cerrar pestaña / cerrar navegador

Me gustaría disparar el código js en el controlador angularjs.

Tengo esto:

$scope.$on(''$destroy'', function () { alert(''page1''); });

Esto funciona bien cuando estoy navegando fuera de la página que está usando ese controlador pero no funciona cuando estoy cerrando la pestaña / navegador.

¿Debo usar algún otro código para disparar el código js cuando se cierre la pestaña / navegador?

Gracias de antemano, Laziale