我正在使用 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 执行。这种行为是设计使然吗?如果是,“默认”是什么意思?
这是 plunk:http ://plnkr.co/edit/o81NVo?p=preview您可以清除控制台并重新运行以查看日志。