Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 15034e8

Browse files
author
Nedyalko Nikolov
committed
Fixed problem with ListView in ios when CustomTemplate is used.
1 parent 70767bb commit 15034e8

File tree

2 files changed

+31
-20
lines changed

2 files changed

+31
-20
lines changed

‎nativescript-angular/directives/list-view-comp.ts‎

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,9 @@ import {
1212
ChangeDetectorRef,
1313
EventEmitter,
1414
ViewChild,
15-
Output} from '@angular/core';
15+
Output,
16+
ChangeDetectionStrategy} from '@angular/core';
17+
import {isBlank} from '@angular/core/src/facade/lang';
1618
import {isListLikeIterable} from '@angular/core/src/facade/collection';
1719
import {Observable as RxObservable} from 'rxjs'
1820
import {ListView} from 'ui/list-view';
@@ -45,7 +47,8 @@ export interface SetupItemViewArgs {
4547
<DetachedContainer>
4648
<Placeholder #loader></Placeholder>
4749
</DetachedContainer>`,
48-
inputs: ['items']
50+
inputs: ['items'],
51+
changeDetection: ChangeDetectionStrategy.OnPush
4952
})
5053
export class ListViewComponent {
5154
public get nativeElement(): ListView {
@@ -97,6 +100,10 @@ export class ListViewComponent {
97100
if (args.view) {
98101
console.log("ListView.onItemLoading: " + index + " - Reusing existing view");
99102
viewRef = args.view[NG_VIEW];
103+
// getting angular view from original element (in cases when ProxyViewContainer is used NativeScript internally wraps it in a StackLayout)
104+
if (!viewRef) {
105+
viewRef = (args.view._subViews && args.view._subViews.length > 0) ? args.view._subViews[0][NG_VIEW] : undefined;
106+
}
100107
}
101108
else {
102109
console.log("ListView.onItemLoading: " + index + " - Creating view from template");
@@ -108,6 +115,9 @@ export class ListViewComponent {
108115
}
109116

110117
public setupViewRef(viewRef: EmbeddedViewRef<ListItemContext>, data: any, index: number): void {
118+
if (isBlank(viewRef)) {
119+
return;
120+
}
111121
const context = viewRef.context;
112122
context.$implicit = data;
113123
context.item = data;

‎ng-sample/app/examples/list/list-test.ts‎

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -6,35 +6,36 @@ class DataItem {
66
constructor(public id: number, public name: string) { }
77
}
88

9-
// @Component({
10-
// selector: 'item-component',
11-
// template: `
12-
// <StackLayout [class.odd]="odd" [class.even]="even">
13-
// <Label [text]='"id: " + data.id'></Label>
14-
// <Label [text]='"name: " + data.name'></Label>
15-
// </StackLayout>
16-
// `
17-
// })
18-
// export class ItemComponent {
19-
// @Input() data: DataItem;
20-
// @Input() odd: boolean;
21-
// @Input() even: boolean;
22-
// constructor() { }
23-
// }
9+
@Component({
10+
selector: 'item-component',
11+
template: `
12+
<StackLayout [class.odd]="odd" [class.even]="even">
13+
<Label [text]='"id: " + data.id'></Label>
14+
<Label [text]='"name: " + data.name'></Label>
15+
</StackLayout>
16+
`
17+
})
18+
export class ItemComponent {
19+
@Input() data: DataItem;
20+
@Input() odd: boolean;
21+
@Input() even: boolean;
22+
constructor() { }
23+
}
2424

2525
@Component({
2626
selector: 'list-test',
27-
//directives: [ItemComponent],
27+
directives: [ItemComponent],
2828
template: `
2929
<GridLayout rows="auto, *, auto, auto">
3030
<Label row="0" text="-==START==-" fontSize="20"></Label>
3131
<GridLayout row="1">
3232
<ListView [items]="myItems" (itemTap)="onItemTap($event)">
3333
<template let-item="item" let-i="index" let-odd="odd" let-even="even">
34-
<StackLayout [class.odd]="odd" [class.even]="even">
34+
<!--<StackLayout [class.odd]="odd" [class.even]="even">
3535
<Label [text]='"index: " + i'></Label>
3636
<Label [text]='"[" + item.id +"] " + item.name'></Label>
37-
</StackLayout>
37+
</StackLayout>-->
38+
<item-component [data]="item" [odd]="odd" [even]="even"></item-component>
3839
</template>
3940
</ListView>
4041
</GridLayout>

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /