首先,我创建了一个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();
});
问题是我只能关闭一个模态,第一个或第二个,但如果我进入第二个我无法关闭第二个。我假设当我关闭它时它会破坏两者的模态实例?如果我不想将它切割成不同的控制器,我该如何解决这个问题?
答案 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