Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/419.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript “离子”选项卡在加载数据之前完成显示_Javascript_Angular_Ionic Framework - Fatal编程技术网

Javascript “离子”选项卡在加载数据之前完成显示

Javascript “离子”选项卡在加载数据之前完成显示,javascript,angular,ionic-framework,Javascript,Angular,Ionic Framework,我正在尝试制作一个优惠券应用程序的收藏夹部分。我检索当前用户最喜欢的凭证,并在HTML中使用ngFor显示它们。但是,在我第一次打开“收藏夹”选项卡时,凭证不会显示。但是,如果我转到另一个选项卡,然后返回,它将显示。在我这样做一次之后,即使我转到其他选项卡并返回,它也会立即继续显示。只有重新启动应用程序后,问题才会再次出现。我想知道我如何才能确保凭证第一次显示 我将收藏夹凭证的提取放在ionViewWillEnter()函数中 TS 问题是getFavorites()方法依赖于您尝试以异步方式并

我正在尝试制作一个优惠券应用程序的收藏夹部分。我检索当前用户最喜欢的凭证,并在HTML中使用ngFor显示它们。但是,在我第一次打开“收藏夹”选项卡时,凭证不会显示。但是,如果我转到另一个选项卡,然后返回,它将显示。在我这样做一次之后,即使我转到其他选项卡并返回,它也会立即继续显示。只有重新启动应用程序后,问题才会再次出现。我想知道我如何才能确保凭证第一次显示

我将收藏夹凭证的提取放在ionViewWillEnter()函数中

TS


问题是getFavorites()方法依赖于您尝试以异步方式并行获取的几个数据源,因此一旦它们完成执行,您就已经调用了getFavorites()。这基本上意味着,在调用getFavorites()之后,IonView中的两个异步调用将进入finish

您似乎在代码中使用了可观察对象,因此您应该能够执行以下操作:

async ionViewWillEnter() {

    this.users = await this.http.get('http://xxxx.com/api/users').toPromise();
    this.user = await this.authService.user().toPromise();
    this.getFavourites()

}

此外,此生命周期挂钩(ionViewWillEnter)不是启动数据采集调用的最佳方式,因为它是通过转换动画而不是在类实例化时启动的。理想情况下,您希望使用ngOnInit(),或者甚至可以从构造函数方法中请求数据。

嘿,您的意思是希望页面仅在数据实际加载时加载?谢谢您的回答。我对您的解决方案进行了研究,并将其与类似的更改一起使用。
<ion-list>
    <ion-item lines="none"  *ngFor="let favourite of favourites">
      <ion-label> 
        <a routerLink="/details" routerDirection="forward" (click)="openDetails(favourite)"><img class="voucher_image" `enter code here`src='http://xxxx.com/imgs/vouchers/{{favourite.image}}'></a>
      </ion-label>
    </ion-item>
 </ion-list>
ngOnInit(){
  this.ionViewWillEnter()
 })
}

async ionViewWillEnter() {
   this.http.get('http://wuiske.com/api/usersall').subscribe((data: any)=>{
   this.users=data
  })
   this.user = await this.authService.user().toPromise();
   this.getFavourites()
}
async ionViewWillEnter() {

    this.users = await this.http.get('http://xxxx.com/api/users').toPromise();
    this.user = await this.authService.user().toPromise();
    this.getFavourites()

}