1

這是我的渲染cases ObservableArray在我看來重新渲染Nativescript的ListView時ObservableArray項目改變

<ListView [items]="cases" class="list-group" *ngIf="cases"> 
    <ng-template let-case="item"> 

cases有這些值:

cases = [{id: 1, name: "Sam"}, {id: 2, name: "Romio"}]

我怎樣才能讓我的ListView重新呈現或以某種方式更新視圖,當我更新這樣的第一個項目?

cases[0]["name"] = "Michael"

回答

2

您是否嘗試過在NgZone中應用更改?我用它來更新數組(不是ObservableArray),相應的RadListView自動更新。

this.ngZone.run(() => { 

     this.dummyService.addFile(this.file).subscribe(
      (fileId) => { 
       this.folder.push(this.file); 
     }, 
     (error) => { 
      this handleError(error); 
     }); 
    }); 
+0

Yesss !!這是答案,謝謝。它按照我的需要和ListView工作。雖然我不明白爲什麼ngZone做到了魔術! – Mutaz

0

你會想在這裏執行不變性。所以如果你必須改變數組中的第一個對象,我會的。之後我會嘗試使用傳播運算符。

cases[0]["name"] = "Michael" 
cases = [...cases]; 

這會將cases設置爲一個新的應該更新列表的數組實例。

+0

我已經嘗試過更改實例,但是當你這樣做時,nativescript不會重新渲染視圖,直到你在UI中點擊某個東西。您所做的任何操作都足以重新渲染。但僅僅改變實例本身是不夠的。我也嘗試保留同一個實例,並刪除舊對象並將新對象添加到數組中,但沒有成功。除非您對UI執行某些操作,否則沒有什麼是重新呈現視圖! – Mutaz

相關問題