我有这样的代码:
$scope.$on("$locationChangeStart", function(event, newPath, oldPath) {
// Do some sync checks
if (!$scope.isPageAllowed($location.path()))
{
// Prevent default for some reason
event.preventDefault();
}
});
当我尝试像这样解决 promise
时:
$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
(因为异步执行),并且在 promises
得到解决后一段时间后阻止了 event
。
有没有一种方法可以将 event
与我的 promises
联系起来,这样它就可以在 promises 被解决后被阻止,而不是在函数结束后立即被阻止?
最佳答案
抱歉,这行不通:-)。事件是完全同步的。
您正在寻找 $route.resolve。路由的异步解析/拒绝,为 Controller 提供数据或只是检查某些内容。
关于events - AngularJS:如何在 promise 完成后防止事件的默认()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16627335/