Я пытаюсь использовать $stateChangeStart
с ui-маршрутизатором в контроллере. Кажется, что каждый раз, когда он уволен, обратный вызов срабатывает +1 раз больше, чем в прошлый раз.stateChangeStart триггер несколько раз
$rootScope.$on('$stateChangeStart', function(event, toState, toParams, fromState, fromParams){
console.log('$stateChangeStart');
});
Например, при первом старте смены console.log
будет выпущен один раз. второй раз console.log
будет выпущен дважды, и т. д.
Я знаю, что использование event.preventDefault()
остановит это поведение, но оно также остановит все поведенческие действия, и это не является реалистичным решением для меня.
У меня есть решение, хотя я чувствую, что может быть более умный способ справиться с этим:
var stateChangeStarted = false;
$rootScope.$on('$stateChangeStart', function(event){
if(!stateChangeStarted) {
stateChangeStarted = true;
console.log('$stateChangeStart');
}
});
Кто-нибудь есть какие-либо идеи, почему это происходит и что еще я могу сделать, чтобы предотвратить это?
Если вы находитесь в том же контроллере, идущем от одного URL-адреса штата к другому URL-адресу штата, это состояниеChangeStart только срабатывает один раз. – duyn9uyen