Sto tentando di utilizzare $stateChangeStart
con il router ui in un controller. Sembra che ogni volta che viene sparato, il callback spara +1 volte di più rispetto all'ultima volta.stateChangeStart che si attiva più volte
$rootScope.$on('$stateChangeStart', function(event, toState, toParams, fromState, fromParams){
console.log('$stateChangeStart');
});
Ad esempio, al primo cambio console.log
verrà generato una volta. la seconda volta console.log
verrà licenziato due volte, ecc.
So che usare event.preventDefault()
interromperà questo comportamento, ma fermerà anche tutti i comportamenti e questa non è una soluzione realistica per me.
Io ho una soluzione, anche se mi sento come se ci potrebbe essere un modo più intelligente per gestire questo:
var stateChangeStarted = false;
$rootScope.$on('$stateChangeStart', function(event){
if(!stateChangeStarted) {
stateChangeStarted = true;
console.log('$stateChangeStart');
}
});
Qualcuno ha qualche idea del perché questo sta accadendo e che cosa posso fare per evitare questo?
Se si utilizza lo stesso controller passando da un URL di stato a un altro URL di stato, questo stateChangeStart viene attivato solo una volta. – duyn9uyen