Quindi utilizzo l'interfaccia utente nella mia applicazione e sto usando il listener $stateChangeStart
per mostrare un caricatore e lo $stateChangeSuccess
per nascondere il caricatore. In questo modo ho un caricatore tra le transizioni di stato.Come essere informati delle cancellazioni dei cambi di stato in ui-router?
$rootScope.$on('$stateChangeStart',
function (event, toState, toParams, fromState, fromParams) {
///show loader
});
$rootScope.$on('$stateChangeSuccess',
function (event, toState, toParams, fromState, fromParams) {
//hide loader
});
Problema:
- Sono in stato A
- clicco su un pulsante per passare allo stato B,
$stateChangeStart
è chiamato per la B, viene mostrato il mio caricatore. - Immediatamente clicco su un altro pulsante per andare a dichiarare A (B ha alcune cose da determinazione, quindi non c'è tempo prima di B UI inizia effettivamente carico)
- B non viene caricato, e
$stateChangeSuccess
non è chiamato e il mio caricatore è mai nascosto (Dato che eravamo già in a, non viene ricaricato)
Quindi c'è un modo posso ascoltare per cancellazioni di modifica dello stato e nascondere il mio caricatore?
Aggiornamento: Ho creato un Plunk. Nel plunk ho dato un timeout di 10 secondi nella risoluzione di B. Quindi, prima che si risolva, fare clic su A. Monitorare la console per eventi listener di modifica dello stato.
Aggiornamento 25 luglio 2015 che utilizza l'ultimo router AngularUI: Creato nuovo Plunk.
si può facilmente raggiungere questo obiettivo il mantenimento dello stato modificare le informazioni all'interno di un servizio ... – harishr
@entre Ma non si sa quando una cancellazione è verificato. –
C'è qualcosa di sbagliato nel primo risultato di Google - https://github.com/angular-ui/ui-router/wiki#state-change-events? –