Ho un oggetto javascript che mi serve per l'applicazione angularjs globale. Quando l'applicazione sta per essere scaricata (a causa di un aggiornamento della pagina o di qualche altro scenario), vorrei mantenere l'oggetto nella memoria del browser. Credo che aggiungere l'oggetto a $ rootScope soddisfi il primo requisito di rendere globale l'oggetto, ma scrivere l'oggetto sullo storage durante l'evento onbeforeunload
richiederebbe l'accesso alla variabile $ rootScope. È possibile rilevare un evento di scarico della pagina in angularjs?Rilevamento dello scaricamento della pagina in angularjs
risposta
Questo dovrebbe farlo, ma suggerisco anche di evitare $rootScope
in quanto lo stato globale è sconsigliato e si potrebbe anche avvolgere localStorage
in un servizio in modo che possa essere iniettato e deriso per il test.
.run([
'$window',
'$rootScope',
function($window, $rootScope) {
$window.addEventListener('beforeunload', function() {
localStorage.myValue = $rootScope.myValue;
});
}
]);
Grazie. E l'evento per il caricamento completato della pagina sarà 'load'? – user1491636
@ user1491636 Non penso che dovresti usare quell'evento. Se vuoi che qualcosa venga eseguito all'inizio della tua app Angular, inseriscilo in un blocco 'run' come nel mio esempio qui. – m59
La soluzione non risolve il problema, perché anche facendo clic su Annulla viene chiamato. –
Hai pensato di usare qualcosa come https://github.com/grevory/angular-local-storage o https://github.com/gsklee/ngStorage – Vadim