Как предотвратить загрузку модальной версии Angular-UI?

0

У меня есть $modalInstance. Я могу получить уведомление о событии с помощью обещаний:

$modalInstance.result.finally(function() {
  // code here
});

Но я не знаю, как предотвратить закрытие, если пользователь закрывает модель по ошибке. Я хочу спросить пользователя, действительно ли кто-то хочет закрыть модель и закрыть ее, если он это сделает. Тем не менее, я не хочу включать backdrop: 'static':

$modal.open({
  ... // other options
  backdrop : 'static'
});

Спасибо.

  • 0
    Когда вы закрываете модальное событие так, что событие запускается, мне кажется, что вы можете как-то с этим поработать, думаю, этот вопрос может вам помочь: stackoverflow.com/questions/30356844/…
  • 0
    Я не думаю, что есть необходимость использовать модал Boostrap. Вы можете просто создать div / форму с z-index больше нуля. И используйте ng-hide / ng-show, как требуется, чтобы скрыть / увидеть.
Показать ещё 2 комментария
Теги:
modal-dialog
angular-ui

1 ответ

2

Я сделал еще несколько исследований, и я нашел другой вопрос, похожий на этот, это ответ, найденный по этому вопросу (не стесняйтесь +1, а не меня)

    $scope.$on('modal.closing', function(event, reason, closed) {
    var r = prompt("Are you sure you wanna close the modal? (Enter 'YES' to close)");

    if (r !== 'YES') {
        event.preventDefault();
    }
});

Поместите это внутри модального контроллера.

Это не совсем то, что вы искали, это подскажет вам, если вы попытаетесь закрыть модальный, отклонив (нажав внешний модальный), отменив или ок. Вы можете попробовать и изменить его в соответствии с вашими потребностями.

Обновление: добавлена простая проверка, if else вы хотите проверить, что было нажато, и если щелкнул фоновый экран, попросите пользователя:

    $scope.$on('modal.closing', function(event, reason, closed) {

    if (reason == 'ok' || reason == 'cancel'){
        console.log('closed');
    } else {
        // this is if 'reason' == 'backdrop click' 
        var r = prompt("Are you sure you wanna close the modal? (Enter 'YES' to close)");

        if (r !== 'YES') {
            event.preventDefault();
        }
    }
});

Считаете ли вы, что этого решения достаточно?

  • 0
    Upvote для ссылки на другой вопрос.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню