Events AngularJS:如何在承诺完成后防止事件的default()?

Events AngularJS:如何在承诺完成后防止事件的default()?,events,angularjs,promise,angularjs-routing,Events,Angularjs,Promise,Angularjs Routing,我有一些这样的代码: $scope.$on(“$locationChangeStart”,函数(事件、新路径、旧路径){ //做一些同步检查 如果(!$scope.isPageAllowed($location.path())) { //出于某种原因防止违约 event.preventDefault(); } }); 当我试图解决承诺时,如下所示: $scope.$on(“$locationChangeStart”,函数(事件、新路径、旧路径){ //做一些异步检查 $scope.fooopr

我有一些这样的代码:

$scope.$on(“$locationChangeStart”,函数(事件、新路径、旧路径){
//做一些同步检查
如果(!$scope.isPageAllowed($location.path()))
{
//出于某种原因防止违约
event.preventDefault();
}
});
当我试图解决
承诺时,如下所示:

$scope.$on(“$locationChangeStart”,函数(事件、新路径、旧路径){
//做一些异步检查
$scope.fooopromises().then(函数(数据){
//在承诺已解决时(仅在已解决的情况下)出于某种原因防止违约
event.preventDefault();
});
});
我成功地获得了
事件
(因为异步执行),并且在
承诺
得到解决后,我阻止了
事件

有没有办法将
事件
与我的
承诺
链接起来,这样就可以在承诺得到解决后立即阻止,而不会在函数结束后立即触发?

很抱歉,这不起作用:-)。事件完全是同步的

您正在查找$route.resolve。异步解析/拒绝路由,以提供控制器数据或只是检查某些内容


感谢您的回复@andy joslin,我已经找到了这个解决方案,但位置有问题。当我拒绝承诺时,并没有像预期的那个样触发任何操作,但URL仍然被更改。所以这就是为什么我要看$locationChangeStart事件——它在位置路径更改之前触发,所以我可以防止URL发生可视更改(无闪烁)。如果拒绝解析也可以阻止URL更改,我们将非常感谢您的帮助。(抱歉英语不好,如果是这样)嗨,菲利克斯,抱歉迟到了。$routeChangeError事件将为您提供以前的和尝试的路由对象作为参数。您可以从上一个路由对象获取上一个路由的路径,并使用
$location.path()
将用户重定向回该路径,然后显示一个错误。您已经尝试过了。此对象包含精确的
数据
of.when('/path/:可能是带参数的,{/*
数据
*/}),但不包含精确的
路径
:(也尝试使用$locationchangesuccessuccess事件来处理此问题。但它返回
绝对url
,这是解析它的一个问题(非常肮脏的方式,imho)