Я использую ui-router и зарегистрировал два обработчика $ stateChangeStart для перенаправления страницы входа.
function func1(e,to,toParams, from, fromParams){
....
if (notAuthenticated) {
e.preventDefault();
$state.go('login');
}
}
function func2(e,to,toParams, from, fromParams){
...
console.log('func2', from, to, e.defaultPrevented);
}
$rootScope.on('$stateChangeStart', func1);
$rootScope.on('$stateChangeStart', func2);
Как func1 preventDefault(), я могу видеть, что в func2 e.defaultPrevented верно. Я просто не понимаю, почему предотвращение дефолта в func1 не прекращает выполнение func2. Это поведение по дизайну? И если это так, что означает «дефолт»?
Вот плунж: http://plnkr.co/edit/o81NVo?p=preview Вы можете очистить консоль и повторно запустить ее, чтобы увидеть журнал.