私はちょうど角度-UI-ルータ1.0.xの:event.preventDefault&event.defaultPrevented代替
$transitions.onStart({}, function(tras){
// need a code equivalent to e.preventDefault
// need a code to identify event.defaultPrevented
// other code goes here...
// get parent states
_o.util.getAncestorStates(toState.name, true).reverse()
.forEach(function (state) {
// certain condition to call event.preventDefault()
if(event.defaultPrevented) {....}
});
});
に$transitions.onStart
$rootScope.$on('$stateChangeStart', function(e, ...){
e.preventDefault();
// other code goes here...
});
で$stateChangeStart
を置き換えると私は推測し、我々は防ぐことができますe.preventDefault()
の代わりにreturn $q.reject()
を追加して移行しましたが、return $q.reject()
のコードがどのように実行されるのか理解できませんでした。
また、event.defaultPrevented
をどのように置き換えることができますか?
私はtransition.promise
で何かをする必要がありますが、明確ではないと思います。
私は申し訳ありませんが、公式の文書 - https://ui-router.github.io/ng1/docs/latest/を簡単に理解できません。誰も私が上記のコードのより良い説明や置き換えを見つけるのを助けることができますか?あなたはこれら二つのオプションの1つを選択することができ
は、私はあなただけ ''私は必要なのですか理由を理解するために移行.. – tanmay
[OK]を、私はちょうど追加より多くのスニペットをキャンセルする.onStart' 'からfalse'を返すことができると思いevent.defaultPrevented ' - すべての親ステートを処理します。特定の条件では、' event.preventDefault'を呼び出します。他の親ステートに対して 'event.defaultPrevented'をチェックします。 – Garfield
プロミスチェーンでは、前のブロックがキャンセルされた場合、後続の '.then'ブロックのコードはスキップされます。前のハンドラがトランジションをキャンセルした場合、 'onStart'ハンドラは決して呼び出されません。 'event.defaultPrevented'は' onStart'ハンドラで 'true'になることはありません。代わりに、 'onError'ハンドラチェーンが呼び出され、' event.defaultPrevented'がtrueの場合に限り、それらのブロックが呼び出されます。 – georgeawg