@@ -9,7 +9,10 @@ import {
9
9
HostListener ,
10
10
IterableDiffers ,
11
11
IterableDiffer ,
12
- ChangeDetectorRef } from 'angular2/core' ;
12
+ ChangeDetectorRef ,
13
+ EventEmitter ,
14
+ Output } from 'angular2/core' ;
15
+ import { isListLikeIterable } from 'angular2/src/facade/collection' ;
13
16
import { Observable as RxObservable } from 'rxjs'
14
17
import { ListView } from 'ui/list-view' ;
15
18
import { View } from 'ui/core/view' ;
@@ -18,6 +21,12 @@ import {ObservableArray} from 'data/observable-array';
18
21
import { LayoutBase } from 'ui/layouts/layout-base' ;
19
22
const NG_VIEW = "_ngViewRef" ;
20
23
24
+ interface SetupItemViewArgs {
25
+ view : EmbeddedViewRef ;
26
+ data : any ;
27
+ index : number ;
28
+ }
29
+
21
30
@Component ( {
22
31
selector : 'ListView' ,
23
32
template : `` ,
@@ -28,6 +37,8 @@ export class ListViewComponent {
28
37
private _items : any ;
29
38
private _differ : IterableDiffer ;
30
39
40
+ @Output ( ) public setupItemView : EventEmitter < SetupItemViewArgs > = new EventEmitter < SetupItemViewArgs > ( ) ;
41
+
31
42
@ContentChild ( TemplateRef ) itemTemplate : TemplateRef ;
32
43
33
44
set items ( value : any ) {
@@ -36,7 +47,7 @@ export class ListViewComponent {
36
47
if ( value instanceof ObservableArray ) {
37
48
needDiffer = false ;
38
49
}
39
- if ( needDiffer && ! this . _differ && value ) {
50
+ if ( needDiffer && ! this . _differ && isListLikeIterable ( value ) ) {
40
51
this . _differ = this . _iterableDiffers . find ( this . _items ) . create ( this . _cdr , ( index , item ) => { return item ; } ) ;
41
52
}
42
53
this . listView . items = this . _items ;
@@ -45,8 +56,8 @@ export class ListViewComponent {
45
56
private timerId : number ;
46
57
private doCheckDelay = 5 ;
47
58
48
- constructor ( private _elementRef : ElementRef ,
49
- private _iterableDiffers : IterableDiffers ,
59
+ constructor ( private _elementRef : ElementRef ,
60
+ private _iterableDiffers : IterableDiffers ,
50
61
private _cdr : ChangeDetectorRef ,
51
62
private _appViewManager : AppViewManager ) {
52
63
this . listView = _elementRef . nativeElement ;
@@ -82,6 +93,7 @@ export class ListViewComponent {
82
93
viewRef . setLocal ( "index" , index ) ;
83
94
viewRef . setLocal ( 'even' , ( index % 2 == 0 ) ) ;
84
95
viewRef . setLocal ( 'odd' , ( index % 2 == 1 ) ) ;
96
+ this . setupItemView . next ( { 'view' : viewRef , 'data' : data , 'index' : index } ) ;
85
97
}
86
98
87
99
ngDoCheck ( ) {
0 commit comments