3
我有一些像這樣的代碼:AngularJS:承諾完成後如何預防事件()的事件?
$scope.$on("$locationChangeStart", function(event, newPath, oldPath) {
// Do some sync checks
if (!$scope.isPageAllowed($location.path()))
{
// Prevent default for some reason
event.preventDefault();
}
});
當我試圖解決promises
這樣的:
$scope.$on("$locationChangeStart", function(event, newPath, oldPath) {
// Do some async checks
$scope.fooPromises().then(function (data) {
// Prevent default for some reason when promises resolved (only if resolved)
event.preventDefault();
});
});
我得到了全成event
(因爲異步執行的),過了一會防止event
時promises
已解決。
有沒有方法可以將event
與我的promises
連接起來,所以在函數結束後解決promise而不是streight後,會有什麼問題呢?
感謝您的答覆@安迪喬斯林,我發現這個解決辦法,但有問題的位置。當我拒絕承諾時,沒有任何行動如預期那樣被解僱,但URL仍然發生了變化。所以這就是我查看$ locationChangeStart事件的原因 - 它在位置路徑更改之前正好觸發,所以我可以阻止來自視覺更改(無閃爍)的URL。如果有拒絕解決的情況也可以防止URL更改 - 您的幫助將非常感激。 (對不起,如果是的話,很糟糕的英語) – FelikZ
任何幫助? – FelikZ
嗨Felikz,對於遲到抱歉。 $ routeChangeError事件將爲您提供以前的和嘗試的路由對象作爲參數。您可以從前一個路由對象獲取前一個路由的路徑,並使用'$ location.path()'將用戶重定向到那裏,並顯示錯誤。 –