JS如何继续事件防止默认

JS how to continue event prevent default

我正在尝试弹出模式询问用户是否确定要离开页面, 虽然还有尚未提交的更改。

这些更改不是使用 <form> 元素完成的,而只是一些更改 是在特定对象上制作的。

我试图检测他何时试图通过 $routeChangeStart 离开页面 $routeChangeSuccess 是这样的:

$scope.$on('$routeChangeStart', function(event, current) {
  event.preventDefault();
  ConfirmationModal.fire("Do you sure?", response => {
    if (response) {
      // how to CONTINUE the prevent default??
    }
  });
}

上面的代码实际上停止了传播并且不让用户离开 这一页。

但是 - 在确认模态后,我找不到任何方法继续页面移动。 我的意思是,我可以防止默认但不能继续默认。

我也尝试过:

$location.path(PATH) 但这根本行不通。

此外 - 即使用户再次点击离开页面 - 事件 preventdefault 仍然存在 阻止。

您可以添加标志和条件:

类似

$scope.allowChange = false;

$scope.$on('$routeChangeStart', function(event, current) {
  // don't do anything when allowChange  === true
  if (!$scope.allowChange) {
    event.preventDefault();
    ConfirmationModal.fire("Do you sure?", response => {
      if (response) {
        $scope.allowChange = true
        $location.path(...) // I forget prop to get new path from
      }
    });
  }

})