@@ -70,10 +70,11 @@ IonicModule
70
70
'$timeout' ,
71
71
'$ionicPlatform' ,
72
72
'$ionicTemplateLoader' ,
73
- '$q' ,
73
+ '$$ q' ,
74
74
'$log' ,
75
75
'$ionicClickBlock' ,
76
- function ( $rootScope , $ionicBody , $compile , $timeout , $ionicPlatform , $ionicTemplateLoader , $q , $log , $ionicClickBlock ) {
76
+ '$window' ,
77
+ function ( $rootScope , $ionicBody , $compile , $timeout , $ionicPlatform , $ionicTemplateLoader , $$q , $log , $ionicClickBlock , $window ) {
77
78
78
79
/**
79
80
* @ngdoc controller
@@ -122,15 +123,16 @@ function($rootScope, $ionicBody, $compile, $timeout, $ionicPlatform, $ionicTempl
122
123
123
124
if ( self . scope . $$destroyed ) {
124
125
$log . error ( 'Cannot call ' + self . viewType + '.show() after remove(). Please create a new ' + self . viewType + ' instance.' ) ;
125
- return ;
126
+ return $$q . when ( ) ;
126
127
}
127
128
128
129
var modalEl = jqLite ( self . modalEl ) ;
129
130
130
131
self . el . classList . remove ( 'hide' ) ;
131
132
$timeout ( function ( ) {
133
+ if ( ! self . _isShown ) return ;
132
134
$ionicBody . addClass ( self . viewType + '-open' ) ;
133
- } , 400 ) ;
135
+ } , 400 , false ) ;
134
136
135
137
if ( ! self . el . parentElement ) {
136
138
modalEl . addClass ( self . animation ) ;
@@ -145,12 +147,14 @@ function($rootScope, $ionicBody, $compile, $timeout, $ionicPlatform, $ionicTempl
145
147
if ( target && self . positionView ) {
146
148
self . positionView ( target , modalEl ) ;
147
149
// set up a listener for in case the window size changes
148
- ionic . on ( 'resize' , function ( ) {
149
- ionic . off ( 'resize' , null , window ) ;
150
- self . positionView ( target , modalEl ) ;
151
- } , window ) ;
150
+
151
+ self . _onWindowResize = function ( ev ) {
152
+ if ( self . _isShown ) self . positionView ( target , modalEl ) ;
153
+ } ;
154
+ $window . addEventListener ( 'resize' , self . _onWindowResize ) ;
152
155
}
153
156
157
+
154
158
modalEl . addClass ( 'ng-enter active' )
155
159
. removeClass ( 'ng-leave ng-leave-active' ) ;
156
160
@@ -163,6 +167,7 @@ function($rootScope, $ionicBody, $compile, $timeout, $ionicPlatform, $ionicTempl
163
167
ionic . views . Modal . prototype . show . call ( self ) ;
164
168
165
169
$timeout ( function ( ) {
170
+ if ( ! self . _isShown ) return ;
166
171
modalEl . addClass ( 'ng-enter-active' ) ;
167
172
ionic . trigger ( 'resize' ) ;
168
173
self . scope . $parent && self . scope . $parent . $broadcast ( self . viewType + '.shown' , self ) ;
@@ -171,6 +176,7 @@ function($rootScope, $ionicBody, $compile, $timeout, $ionicPlatform, $ionicTempl
171
176
} , 20 ) ;
172
177
173
178
return $timeout ( function ( ) {
179
+ if ( ! self . _isShown ) return ;
174
180
//After animating in, allow hide on backdrop click
175
181
self . $el . on ( 'click' , function ( e ) {
176
182
if ( self . backdropClickToClose && e . target === self . el ) {
@@ -198,9 +204,10 @@ function($rootScope, $ionicBody, $compile, $timeout, $ionicPlatform, $ionicTempl
198
204
modalEl . addClass ( 'ng-leave' ) ;
199
205
200
206
$timeout ( function ( ) {
207
+ if ( self . _isShown ) return ;
201
208
modalEl . addClass ( 'ng-leave-active' )
202
209
. removeClass ( 'ng-enter ng-enter-active active' ) ;
203
- } , 20 ) ;
210
+ } , 20 , false ) ;
204
211
205
212
self . $el . off ( 'click' ) ;
206
213
self . _isShown = false ;
@@ -211,7 +218,7 @@ function($rootScope, $ionicBody, $compile, $timeout, $ionicPlatform, $ionicTempl
211
218
212
219
// clean up event listeners
213
220
if ( self . positionView ) {
214
- ionic . off ( 'resize' , null , window ) ;
221
+ $window . addEventListener ( 'resize' , self . _onWindowResize ) ;
215
222
}
216
223
217
224
return $timeout ( function ( ) {
0 commit comments