JS如何继续事件防止默认

时间:2018-11-11 13:31:32

标签: javascript angularjs angular-ui-router preventdefault

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

这些更改不是使用<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仍然是 防止。

1 个答案:

答案 0 :(得分:2)

您可以添加一个标志和一个条件:

类似

$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
      }
    });
  }

})