我只是$transitions.onStart
角UI路由器1.0.x的:event.preventDefault&event.defaultPrevented替代
$rootScope.$on('$stateChangeStart', function(e, ...){
e.preventDefault();
// other code goes here...
});
取代$stateChangeStart
到
$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) {....}
});
});
,我想,我們可以防止通過添加return $q.reject()
而不是e.preventDefault()
,但我不明白return $q.reject()
以下的代碼將如何執行。
另外,如何更換event.defaultPrevented
?
我覺得應該在transition.promise
上做一些事情,但不清楚。
對不起,我很難理解官方文檔 - https://ui-router.github.io/ng1/docs/latest/。任何人都可以幫我找到更好的解釋或替代上述代碼嗎?
我想從'.onStart'你可以'返回FALSE'取消過渡.. – tanmay
沒關係,我只是增加了更多的片段來了解爲什麼需要'event.defaultPrevented ' - 我處理所有父狀態,並且在某種情況下,我調用'event.preventDefault'並檢查'event.defaultPrevented'是否有其他父狀態。 – Garfield
使用承諾鏈,如果先前的塊取消,則跳過隨後的「.then」塊中的代碼。如果前一個處理程序取消轉換,則不會調用「onStart」處理函數。 'event.defaultPrevented'永遠不會在'onStart'處理程序中成爲'true'。而是調用'onError'處理程序鏈,只有當'event.defaultPrevented'爲true時,纔會調用這些塊。 – georgeawg