我正在尝试让我的ListView刷新并从本地阵列重新加载数据。数组得到更新,我可以手动刷新列表,但我希望它是自动的。我一直在尝试将@ViewChild("POHeaderLV") poListView: ElementRef;
与<ListView>this.poListView.nativeElement.refresh();
一起使用,但列表仍然没有刷新它应该如何。
是的,在调用刷新函数之前更改了数组。
答案 0 :(得分:2)
您可以使用getViewById
方法获取元素。然后,您应该能够使用其refresh()
方法刷新ListView。您还可以查看下面附带的示例。
app.component.html
<GridLayout rows="* 50" >
<ListView id="lvId" row="0" [items]="myItems" (itemTap)="onItemTap($event)">
<template let-item="item" let-i="index" let-odd="odd" let-even="even">
<StackLayout [class.odd]="odd" [class.even]="even">
<Label [text]='"index: " + i'></Label>
<Label [text]='"[" + item.id +"] " + item.name'></Label>
</StackLayout>
</template>
</ListView>
<Button text="Refresh" (tap)="refresh()"></Button>
</GridLayout>
app.component.ts
import { Component } from "@angular/core";
import {Page} from "ui/page"
import {ListView} from "ui/list-view"
class DataItem {
constructor(public id: number, public name: string) { }
}
@Component({
selector: "my-app",
templateUrl: "app.component.html",
})
export class AppComponent {
public myItems: Array<DataItem>;
private counter: number;
constructor(public page:Page ) {
//........................
}
public onItemTap(args) {
console.log("------------------------ ItemTapped: " + args.index);
}
public refresh(){
//do something
var listview:ListView=<ListView> this.page.getViewById("lvId");
listview.refresh();
}
}