Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit f7d2273

Browse files
committedMay 5, 2016
Upgrade to RC1: new ListView templates.
1 parent 866e9cd commit f7d2273

File tree

4 files changed

+29
-16
lines changed

4 files changed

+29
-16
lines changed
 

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ export class DataItem {
1111
template: `
1212
<GridLayout>
1313
<ListView [items]="myItems | async" (itemTap)="onItemTap($event)">
14-
<template #item="item" #i="index" #odd="odd" #even="even">
14+
<template let-item="item" let-i="index" let-odd="odd" let-even="even">
1515
<StackLayout [class.odd]="odd" [class.even]="even">
1616
<Label class="test" [text]='"index: " + item.name'></Label>
1717
</StackLayout>

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ class DataItem {
3030
<Label row="0" text="-==START==-" fontSize="20"></Label>
3131
<GridLayout row="1">
3232
<ListView [items]="myItems" (itemTap)="onItemTap($event)">
33-
<template #item="item" #i="index" #odd="odd" #even="even">
33+
<template let-item="item" let-i="index" let-odd="odd" let-even="even">
3434
<StackLayout [class.odd]="odd" [class.even]="even">
3535
<Label [text]='"index: " + i'></Label>
3636
<Label [text]='"[" + item.id +"] " + item.name'></Label>

‎ng-sample/app/examples/renderer-test.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@
2424
<TextView *ngIf='showDetails' [text]='detailsText'></TextView>
2525
<Label text='==============================' fontSize='20'></Label>
2626
<StackLayout #more *ngIf='showDetails' orientation='vertical'>
27-
<TextField *ngFor='#detailLine of detailLines' [text]='detailLine'></TextField>
27+
<TextField *ngFor='let detailLine of detailLines' [text]='detailLine'></TextField>
2828
</StackLayout>
2929
<Label text='==============================' fontSize='20'></Label>
3030
<templated-component [renderChild]="true"></templated-component>
31-
</StackLayout>
31+
</StackLayout>

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

Lines changed: 25 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,19 @@ import {ObservableArray} from 'data/observable-array';
2222
import {LayoutBase} from 'ui/layouts/layout-base';
2323
const NG_VIEW = "_ngViewRef";
2424

25+
export class ListItemContext {
26+
constructor(
27+
public $implicit?: any,
28+
public item?: any,
29+
public index?: number,
30+
public even?: boolean,
31+
public odd?: boolean
32+
) {
33+
}
34+
}
35+
2536
export interface SetupItemViewArgs {
26-
view: EmbeddedViewRef;
37+
view: EmbeddedViewRef<any>;
2738
data: any;
2839
index: number;
2940
}
@@ -45,7 +56,7 @@ export class ListViewComponent {
4556

4657
@Output() public setupItemView: EventEmitter<SetupItemViewArgs> = new EventEmitter<SetupItemViewArgs>();
4758

48-
@ContentChild(TemplateRef) itemTemplate: TemplateRef;
59+
@ContentChild(TemplateRef) itemTemplate: TemplateRef<ListItemContext>;
4960

5061
set items(value: any) {
5162
this._items = value;
@@ -77,28 +88,30 @@ export class ListViewComponent {
7788
let index = args.index;
7889
let items = args.object.items;
7990
let currentItem = typeof (items.getItem) === "function" ? items.getItem(index) : items[index];
80-
let viewRef: EmbeddedViewRef;
91+
let viewRef: EmbeddedViewRef<ListItemContext>;
8192

8293
if (args.view) {
8394
console.log("ListView.onItemLoading: " + index + " - Reusing exisiting view");
8495
viewRef = args.view[NG_VIEW];
8596
}
8697
else {
8798
console.log("ListView.onItemLoading: " + index + " - Creating view from template");
88-
viewRef = this.loader.createEmbeddedView(this.itemTemplate, 0);
99+
viewRef = this.loader.createEmbeddedView(this.itemTemplate, new ListItemContext(), 0);
89100
args.view = getSingleViewFromViewRef(viewRef);
90101
args.view[NG_VIEW] = viewRef;
91102
}
92103
this.setupViewRef(viewRef, currentItem, index);
93104
}
94105

95-
public setupViewRef(viewRef: EmbeddedViewRef, data: any, index: number): void {
96-
viewRef.setLocal('\$implicit', data);
97-
viewRef.setLocal("item", data);
98-
viewRef.setLocal("index", index);
99-
viewRef.setLocal('even', (index % 2 == 0));
100-
viewRef.setLocal('odd', (index % 2 == 1));
101-
this.setupItemView.next({'view': viewRef, 'data': data, 'index': index});
106+
public setupViewRef(viewRef: EmbeddedViewRef<ListItemContext>, data: any, index: number): void {
107+
const context = viewRef.context;
108+
context.$implicit = data;
109+
context.item = data;
110+
context.index = index;
111+
context.even = (index % 2 == 0);
112+
context.odd = !context.even;
113+
114+
this.setupItemView.next({view: viewRef, data: data, index: index, context: context});
102115
}
103116

104117
ngDoCheck() {
@@ -118,7 +131,7 @@ export class ListViewComponent {
118131
}
119132
}
120133

121-
function getSingleViewFromViewRef(viewRef: EmbeddedViewRef): View {
134+
function getSingleViewFromViewRef(viewRef: EmbeddedViewRef<any>): View {
122135
var getSingleViewRecursive = (nodes: Array<any>, nestLevel: number) => {
123136
var actualNodes = nodes.filter((n) => !!n && n.nodeName !== "#text");
124137

0 commit comments

Comments
 (0)
Please sign in to comment.