Ионное всплывающее окно создается несколько раз при нажатии устройства назад

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

Всплывающее окно выхода из приложения:

 $rootScope.exitApp = function () {


                exitpopup = $ionicPopup.show({
                    templateUrl: 'templates/exitApp1.html'

                });

                exitpopup.then(function (res) {
                    console.log(res);

                });
                return false;
            };

Функция RegisterBack:

 $ionicPlatform.registerBackButtonAction(function (e) {
  // lots of  code 
 if ($ionicHistory.backView())
 $rootScope.exitApp ();
});

Я что-то пропустил?

1 ответ

Надеюсь, что ниже функция поможет вам. Установите флаг, когда кнопка "Назад" нажимает и проверяет флаг, если флаг имеет значение "Ложь", нет необходимости показывать диалог снова. если пользователь нажал "Отмена", измените значение флага еще раз.

app.run(function($ionicPlatform,$rootScope,$ionicPopup) 
{
    $rootScope.is_dialog_in_screen = false;
    $ionicPlatform.ready(function() 
    {
        if(window.cordova && window.cordova.plugins.Keyboard) 
        {
            cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
            cordova.plugins.Keyboard.disableScroll(true);
        }
        if(window.StatusBar) 
        {
            StatusBar.styleDefault();
        }
    });

    $ionicPlatform.registerBackButtonAction(function (event) 
    { 
        event.preventDefault();

        if($rootScope.is_dialog_in_screen==false)
        {
            var confirmPopup = $ionicPopup.confirm({
                title: 'Quit.?',
                template: 'Really want to exit?',
                cancelText: 'cancel',
                okText: 'ok'
            })
            .then(function(res) 
            {
                if (res) 
                {
                    alert("Exit app logic goes here");
                }
                else
                {
                    $rootScope.is_dialog_in_screen = false;
                }
            });

            $rootScope.is_dialog_in_screen = true;
        }
    }, 999);
})
Другие вопросы по тегам