@@ -30,7 +30,6 @@ export abstract class TabViewItemBase extends ViewBase implements TabViewItemDef
3030 get title ( ) : string {
3131 return this . _title ;
3232 }
33-
3433 set title ( value : string ) {
3534 if ( this . _title !== value ) {
3635 this . _title = value ;
@@ -69,6 +68,17 @@ export abstract class TabViewItemBase extends ViewBase implements TabViewItemDef
6968 }
7069 }
7170
71+ public loadView ( view : ViewBase ) : void {
72+ const tabView = this . parent as TabViewBase ;
73+ if ( tabView && tabView . items ) {
74+ const index = tabView . items . indexOf ( this ) ;
75+ // Don't load items until their fragments are instantiated.
76+ if ( index === tabView . selectedIndex && ( < TabViewItemDefinition > this ) . canBeLoaded ) {
77+ super . loadView ( view ) ;
78+ }
79+ }
80+ }
81+
7282 public abstract _update ( ) ;
7383}
7484
@@ -135,11 +145,8 @@ export class TabViewBase extends View implements TabViewDefinition, AddChildFrom
135145 }
136146
137147 get _childrenCount ( ) : number {
138- if ( this . items ) {
139- return this . items . length ;
140- }
141-
142- return 0 ;
148+ const items = this . items ;
149+ return items ? items . length : 0 ;
143150 }
144151
145152 public eachChild ( callback : ( child : ViewBase ) => boolean ) {
@@ -151,15 +158,6 @@ export class TabViewBase extends View implements TabViewDefinition, AddChildFrom
151158 }
152159 }
153160
154- public loadView ( view : ViewBase ) : void {
155- const item = view as TabViewItem ;
156- const index = this . items . indexOf ( item ) ;
157- if ( index === this . selectedIndex && item . canBeLoaded ) {
158- super . loadView ( item ) ;
159- }
160- // Don't load items until their fragments are instantiated.
161- }
162-
163161 public eachChildView ( callback : ( child : View ) => boolean ) {
164162 const items = this . items ;
165163 if ( items ) {
@@ -193,17 +191,18 @@ export class TabViewBase extends View implements TabViewDefinition, AddChildFrom
193191
194192 const oldItem = items [ oldIndex ] ;
195193 if ( oldItem ) {
196- this . unloadView ( oldItem ) ;
194+ oldItem . unloadView ( oldItem . view ) ;
197195 }
198196
199197 const newItem = items [ newIndex ] ;
200- if ( newItem && ! newItem . isLoaded && this . isLoaded ) {
201- this . loadView ( newItem ) ;
198+ if ( newItem && this . isLoaded ) {
199+ newItem . loadView ( newItem . view ) ;
202200 }
203201
204202 this . notify ( < SelectedIndexChangedEventData > { eventName : TabViewBase . selectedIndexChangedEvent , object : this , oldIndex, newIndex } ) ;
205203 }
206204}
205+
207206export interface TabViewBase {
208207 on ( eventNames : string , callback : ( data : EventData ) => void , thisArg ?: any ) ;
209208 on ( event : "selectedIndexChanged" , callback : ( args : SelectedIndexChangedEventData ) => void , thisArg ?: any ) ;
0 commit comments