首页 > 解决方案 > 根据从 API 检索到的信息更改页面 - Ionic

问题描述

我正在从 API 中检索当天的记录。如果inventory_name = "Better luck next time!",我想把它推到FailResultsPage. 否则,我希望它推送到ResultsPage. ResultsPage无论我得到什么结果,我当前的代码总是将我引导到。我做错了什么?

提供者

getUserSpin(spin_date: string){
return this.http.get<GamesRecords>(`${this.dataApiUrl}//someapi &filters[spin_date]=${spin_date}`,
  { headers: new HttpHeaders().set('X-XSRF-TOKEN', this.getCookie('XSRF-TOKEN'))});}

.ts 页面

export class GamesPage {
  games: Games[];
  inventory_name: string = 'Better luck next time!';
  spin_date;
  date;
  gamed;

  constructor(public navCtrl: NavController, public datepipe: DatePipe, private alertCtrl: AlertController, private christmasProvider: ChristmasProvider, private storage: Storage) {

  gotoResultpage(){

      this.date = new Date();
      let spin_date = this.datepipe.transform(this.date, 'yyyy-MM-dd');
      console.log(spin_date);
      this.christmasProvider.getUserSpin(spin_date).pipe(
        map((gamesResult: GamesRecords) => gamesResult && gamesResult.records)
      ).subscribe(gamed => {
        this.games = gamed;
        this.storage.set('inventory_name', gamed);
        console.log(this.gamed);
      });

      if(this.gamed = this.inventory_name){
        this.navCtrl.push(FailResultsPage);
        console.log('push to fail page');
        console.log(this.gamed);
      }

      else{
        this.navCtrl.push(ResultsPage);
        console.log('push to success page');
      }
  }
}

标签: javascripttypescriptapiionic-framework

解决方案


因为是异步调用,所以不知道什么时候返回。所以将 if else 语句移到 subscribe 函数中,试试下面的代码

转到结果页(){

  this.date = new Date();
  let spin_date = this.datepipe.transform(this.date, 'yyyy-MM-dd');
  console.log(spin_date);
  this.christmasProvider.getUserSpin(spin_date).pipe(
    map((gamesResult: GamesRecords) => gamesResult && gamesResult.records)
  ).subscribe(gamed => {
    this.games = gamed;
    this.storage.set('inventory_name', gamed);
    console.log(this.gamed);
    if(this.gamed == this.inventory_name){
      this.navCtrl.push(FailResultsPage);
      console.log('push to fail page');
      console.log(this.gamed);
    }else{
      this.navCtrl.push(ResultsPage);
      console.log('push to success page');
    }  
  });

}


推荐阅读