JS как продолжить событие предотвратить по умолчанию - PullRequest
0 голосов
/ 11 ноября 2018

Я пытаюсь получить модальный запрос, спрашивая пользователя, уверен ли он покинуть страницу, пока есть изменения, которые еще не были зафиксированы.

Эти изменения НЕ делаются с использованием элемента <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) но это просто не сработало.

Кроме того, даже если пользователь повторно щелкнет, чтобы снова покинуть страницу, событие по умолчанию по-прежнему сохраняется предотвращено.

1 Ответ

0 голосов
/ 11 ноября 2018

Вы можете добавить флаг и условие:

Что-то вроде

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

})
...