Il problema che sto riscontrando potrebbe essere tangenziale, ma poiché googling mi ha portato a questa domanda, questo potrebbe essere appropriato. Il problema suscita la sua brutta testa per me quando utilizzo UI Router, ma solo quando provo ad aggiornare la pagina con il pulsante di aggiornamento del browser. L'app utilizza il router UI con uno stato astratto padre e quindi gli stati figlio fuori dal padre. Sulla run()funzione app , c'è un $state.go('...child-state...')comando. Lo stato genitore utilizza un resolve, e all'inizio pensavo che forse un controller figlio eseguisse due volte.
Va tutto bene prima che all'URL sia stato aggiunto l'hash.
www.someoldwebaddress.org
Quindi, una volta che l'URL è stato modificato dal router dell'interfaccia utente,
www.someoldwebaddress.org#/childstate
... e poi quando aggiorno la pagina con il pulsante di aggiornamento del browser , il $stateChangeStartfuoco si accende due volte e ogni volta punta al childstate.
Lo resolvestato genitore è ciò che sta sparando due volte.
Forse questo è un kludge; a prescindere, questo sembra eliminare il problema per me: nell'area del codice in cui $stateProviderviene invocato per la prima volta , per prima cosa controlla se window.location.hash è una stringa vuota. Se lo è, va tutto bene; in caso contrario, impostare window.location.hash su una stringa vuota. Quindi sembra che l' $stateunico tentativo di andare da qualche parte una volta anziché due volte.
Inoltre, se non vuoi fare affidamento sul valore predefinito dell'app rune state.go(...), puoi provare a catturare il valore hash e utilizzare il valore hash per determinare lo stato figlio in cui ti trovavi poco prima dell'aggiornamento della pagina e aggiungere una condizione all'area nella tua codice dove hai impostato il state.go(...).
ng-appe con il bootstrap manuale). Controlla anche se hai collegato il controller a più elementi (con ng-controller).