当ObservableArray项更改时重新呈现Nativescript ListView
这就是我在视图中呈现当ObservableArray项更改时重新呈现Nativescript ListView,nativescript,angular2-nativescript,nativescript-angular,Nativescript,Angular2 Nativescript,Nativescript Angular,这就是我在视图中呈现案例的方式 <ListView [items]="cases" class="list-group" *ngIf="cases"> <ng-template let-case="item"> 假设cases具有以下值: cases=[{id:1,名称:“Sam”},{id:2,名称:“Romio”}] 当我像这样更新第一个项目时,如何让我的ListView重新渲染或以某种方式更新视图 cases[0][“name”]=“Michael”您
案例的方式
<ListView [items]="cases" class="list-group" *ngIf="cases">
<ng-template let-case="item">
假设cases
具有以下值:
cases=[{id:1,名称:“Sam”},{id:2,名称:“Romio”}]
当我像这样更新第一个项目时,如何让我的ListView重新渲染或以某种方式更新视图
cases[0][“name”]=“Michael”
您将希望在此处强制执行不变性。所以如果你必须变异数组中的第一个对象,我会。之后我会尝试使用spread操作符
cases[0]["name"] = "Michael"
cases = [...cases];
这将案例设置为数组的新实例,该实例应更新列表。您是否尝试在中应用更改?我用它来更新一个数组(不是ObservableArray),相应的RadListView会自动更新
this.ngZone.run(() => {
this.dummyService.addFile(this.file).subscribe(
(fileId) => {
this.folder.push(this.file);
},
(error) => {
this handleError(error);
});
});
我已经尝试过更改实例,但是当您执行此操作时,nativescript不会重新渲染视图,直到您在UI中找到某个对象。您执行的任何操作都足以重新渲染。但是仅仅改变实例本身是不够的。除了更新,我还尝试保留相同的实例,删除旧对象并将新对象添加到数组中,但没有成功。在对UI执行某些操作之前,不会重新呈现视图!是的!!这就是答案,谢谢。它可以根据我的需要使用ListView。虽然我不明白为什么ngZone会变魔术!