Блокировка навигации с помощью protectDefault () не работает для angularjs $ locationChangeStart - PullRequest
0 голосов
/ 09 ноября 2018

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

Однако представление изменяется до того, как даже мое всплывающее окно запускается.Просто мой event.preventDefault () не работает.Не уверен, что я делаю не так, но вот код:

$rootScope.$on('$locationChangeStart', function (event) {
        var path = $location.path();
        if (self.editCableMode || self.editBinMode) {
            SweetAlert.swal({
                title: 'Still Editing',
                text: 'You have unsaved changes. Are you sure you want to leave?',
                type: 'warning',
                showCancelButton: true,
                confirmButtonColor: '#F8BB86',
                confirmButtonText: 'Yes'
            }, function (isConfirm) {
                if (isConfirm) {
                    console.log(isConfirm)
                    self.editCableMode = false;
                    self.editBinMode = false;
                }else{
                    console.log(isConfirm)

                    event.preventDefault();
                }
            });

        }
    });
...