2
我有一个离子列表与ngFor循环。下面是HTML:离子2 - 列表不更新
<ion-list>
<ion-item *ngFor="let kiosk of kiosks" (click)="goToKioskProfilePage(kiosk)">
{{kiosk.name}}
</ion-item>
</ion-list>
这里是构造函数:
kiosks: any;
constructor(public navCtrl: NavController, navParams: NavParams, public locationTracker: LocationTracker, public api: ApiService, public zone: NgZone) {
this.kiosks = [];
this.zone.run(() => {
this.locationTracker.getGeolocation().then(location => {
this.api.getClosestKiosks(location, constants.AMOUNT_OF_CLOSEST_KIOSKS).then(
data => {
console.log("ready");
this.kiosks = data['data'];
},
err => {
console.log(err);
}
);
});
});
}
控制台日志“准备”,但该列表不会更新。我已经尝试过与NgZone,但它仍然无法正常工作。只有当我打开sidemenu列表更新,但不是之前。有人知道如何解决这个问题?
请问,如果你只是运行区内的分配(而不是整个地理定位调用)工作的呢?就像'this.zone.run(()=> {this.kiosks = data ['data'];}); ' – sebaferreras
你不应该使用区域。它需要更新而不使用区域,所以问题必须在代码的其他部分。也许亭必须公开? –
@CarlosAdrián因为一些异步方法正在被调用(因此,被外界angular2运行),你必须让角度知道反正那东西已经改变和视图必须被更新。如果'kiosk'属性未公开,则在尝试渲染视图时应在控制台中显示错误。 – sebaferreras