AngularJS:如何在promise完成后阻止事件的默认()?

时间:2013-05-18 18:00:28

标签: events angularjs promise angularjs-routing

我有一些像这样的代码:

$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联系起来,所以在承诺得到解决之后会完全阻止它,而不是在功能结束后直接阻止?

1 个答案:

答案 0 :(得分:6)

抱歉,这不起作用:-)。事件纯粹是同步的。

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

http://www.egghead.io/video/Kr1qZ8Ik9G8