Ich versuche $stateChangeStart
mit UI Router in einem Controller zu verwenden. Es sieht so aus, als ob der Callback jedes Mal, wenn er ausgelöst wird, +1 mal mehr als beim letzten Mal auslöst.stateChangeStart triggert mehrmals
$rootScope.$on('$stateChangeStart', function(event, toState, toParams, fromState, fromParams){
console.log('$stateChangeStart');
});
Zum Beispiel wird beim ersten Änderungsstart console.log
einmal ausgelöst. Zum zweiten Mal console.log
wird zweimal gefeuert, etc. usw.
Ich weiß, mit event.preventDefault()
wird dieses Verhalten zu stoppen, aber es wird auch alle Verhaltensweisen stoppen und das ist keine realistische Lösung für mich.
ich eine Lösung, obwohl ich wie es vielleicht das Gefühl, ein intelligenter Weg, dies zu handhaben:
var stateChangeStarted = false;
$rootScope.$on('$stateChangeStart', function(event){
if(!stateChangeStarted) {
stateChangeStarted = true;
console.log('$stateChangeStart');
}
});
Hat keine Ahnung, jemand, warum dies geschieht und was kann ich sonst noch tun, dies zu verhindern?
Wenn Sie im selben Controller von einer Status-URL zu einer anderen State-URL wechseln, wird diese stateChangeStart nur einmal ausgelöst. – duyn9uyen