2016-12-14 8 views
1

ローカルリストからデータを更新してリロードするためにListViewを取得しようとしています。配列が更新され、私は手動でリストをリフレッシュすることができますが、私はそれを自動的にしたいです。私は@ViewChild("POHeaderLV") poListView: ElementRef;<ListView>this.poListView.nativeElement.refresh();を使用しようとしていましたが、リストはまだそれがどのように更新されていません。ListViewがNativescriptで完全にリフレッシュされていません。

そして、の配列は、より前に変更されています。私はリフレッシュ関数を呼び出します。

答えて

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(); 
    } 
} 
関連する問題