@@ -13,6 +13,7 @@ function($scope, $element, $attrs, $compile, $controller, $ionicNavBarDelegate,
1313
1414 var DATA_ELE_IDENTIFIER = '$eleId' ;
1515 var DATA_DESTROY_ELE = '$destroyEle' ;
16+ var DATA_NO_CACHE = '$noCache' ;
1617 var VIEW_STATUS_ACTIVE = 'active' ;
1718 var VIEW_STATUS_CACHED = 'cached' ;
1819 var HISTORY_AFTER_ROOT = 'after-root' ;
@@ -132,26 +133,32 @@ function($scope, $element, $attrs, $compile, $controller, $ionicNavBarDelegate,
132133
133134 self . transitionEnd = function ( ) {
134135 var viewElements = $element . children ( ) ;
135- var viewElementsLength = viewElements . length ;
136- var x , viewElement ;
136+ var x , l , viewElement ;
137137 var isHistoryRoot ;
138138
139- for ( x = 0 ; x < viewElementsLength ; x ++ ) {
139+ for ( x = 0 , l = viewElements . length ; x < l ; x ++ ) {
140140 viewElement = viewElements . eq ( x ) ;
141141
142142 if ( viewElement . data ( DATA_ELE_IDENTIFIER ) === activeEleId ) {
143143 // this is the active element
144144 navViewAttr ( viewElement , VIEW_STATUS_ACTIVE ) ;
145145 isHistoryRoot = $ionicViewSwitcher . isHistoryRoot ( viewElement ) ;
146146
147- } else if ( navViewAttr ( viewElement ) === 'leaving' || navViewAttr ( viewElement ) === VIEW_STATUS_ACTIVE ) {
148- // this is a leaving element or was the former active element
149- navViewAttr ( viewElement , VIEW_STATUS_CACHED ) ;
147+ } else if ( navViewAttr ( viewElement ) === 'leaving' || navViewAttr ( viewElement ) === VIEW_STATUS_ACTIVE || navViewAttr ( viewElement ) === VIEW_STATUS_CACHED ) {
148+ // this is a leaving element or was the former active element, or is an cached element
149+ if ( viewElement . data ( DATA_DESTROY_ELE ) || viewElement . data ( DATA_NO_CACHE ) ) {
150+ // this element shouldn't stay cached
151+ $ionicViewSwitcher . destroyViewEle ( viewElement ) ;
152+ } else {
153+ // keep in the DOM, mark as cached
154+ navViewAttr ( viewElement , VIEW_STATUS_CACHED ) ;
155+ }
150156 }
151157 }
152158
153159 if ( isHistoryRoot ) {
154- for ( x = 0 ; x < viewElementsLength ; x ++ ) {
160+ viewElements = $element . children ( ) ;
161+ for ( x = 0 , l = viewElements . length ; x < l ; x ++ ) {
155162 viewElement = viewElements . eq ( x ) ;
156163
157164 if ( $ionicViewSwitcher . isHistoryRoot ( viewElement ) && navViewAttr ( viewElement ) !== VIEW_STATUS_ACTIVE ) {
0 commit comments