ListView在使用Angular的Nativescript中没有完全刷新

时间:2016-12-14 10:11:32

标签: listview nativescript

我正在尝试让我的ListView刷新并从本地阵列重新加载数据。数组得到更新,我可以手动刷新列表,但我希望它是自动的。我一直在尝试将@ViewChild("POHeaderLV") poListView: ElementRef;<ListView>this.poListView.nativeElement.refresh();一起使用,但列表仍然没有刷新它应该如何。

是的,调用刷新函数之前更改了数组。

1 个答案:

答案 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();
    }
}