我有一个模式打开第二个模式,如果打开然后关闭第二个模式,则无法关闭第一个模式

I have a modal that opens a second modal and cannot close the first modal if open then close the second

本文关键字:模式 第二个 第一个 如果 有一个 然后      更新时间:2023-09-26

首先,我创建了一个代码笔,我认为标题说明了一切。我创建了一个服务来处理我的模态,如下所示

.service('ModalService', function($ionicModal, $ionicLoading, $rootScope) {
    var init = function(tpl, $scope) {
      $ionicLoading.show({
        content: 'Loading',
        animation: 'fade-in',
        showBackdrop: true,
        maxWidth: 200,
        showDelay: 0
      });
      var promise;
      $scope = $scope || $rootScope.$new();
      promise = $ionicModal.fromTemplateUrl(tpl, {
        scope: $scope,
        animation: 'slide-in-up'
      }).then(function(modal) {
        $scope.modal = modal;
        return modal;
      });
      $scope.$on('$destroy', function() {
        $scope.modal.remove();
      });
      return promise;
    }
    return {
      init: init
    }
  })

它在控制器中被调用,就像这样

   ModalService.init('modal.html', $scope).then(function(modal) {
        ...do something....
        $ionicLoading.hide();
        modal.show();
      });

问题是我只能关闭一种模式,第一个或第二个,但是如果我进入第二个,我无法关闭第二个。我假设当我关闭一个时它会破坏两者的模态实例?如果我不想将其切入不同的控制器,我该如何解决此问题?

您将函数

返回modal控制器的所有实例分配给$scope.modal $ionicModal.fromTemplateUrl(...).then(modal)

第二个实例"覆盖"第一个实例,因此当您关闭第二个实例然后尝试使用关闭按钮(ng-click="modal.hide()")隐藏第一个实例时,$scope.modal仍然指向第二个...

因此,在您的服务中,您必须为每个$ionicModal实例单独存储模态控制器。以下是对代码的可能编辑:

http://codepen.io/beaver71/pen/dGKBmv

另请查看这篇文章: 如何在科尔多瓦应用程序中创建两个离子模态?或这个:离子多模态仅最后显示