我有一个模态打开第二个模态,如果打开则不能关闭第一个模态然后关闭第二个模态

时间:2016-02-01 05:08:17

标签: javascript angularjs ionic-framework modal-dialog

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

.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();
      });

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

1 个答案:

答案 0 :(得分:1)

您已将modal函数返回的$ionicModal.fromTemplateUrl(...).then(modal)控制器的所有实例分配给$ scope.modal。

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

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

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

另请查看此帖:How to create two ionic modal in a cordova app? 或者这一个:Ionic Multiple Modals only last showing