7

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

+0

Hai pensato di usare qualcosa come https://github.com/grevory/angular-local-storage o https://github.com/gsklee/ngStorage – Vadim

risposta

11

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; 
    }); 
    } 
]); 
+0

Grazie. E l'evento per il caricamento completato della pagina sarà 'load'? – user1491636

+0

@ 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

+0

La soluzione non risolve il problema, perché anche facendo clic su Annulla viene chiamato. –

Problemi correlati