私は ui-router を使用しており、ログイン ページのリダイレクト用に 2 つの $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 が true であることがわかります。func1 のデフォルトを防止しても func2 の実行が停止しない理由がわかりません。この動作は設計によるものですか? もしそうなら、「デフォルト」とはどういう意味ですか?
プランクは次のとおりです: http://plnkr.co/edit/o81NVo?p=previewコンソールをクリアして再実行すると、ログが表示されます。