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()'将用户重定向到那里,并显示错误。 –