javascript - 根据从 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');
}
}
}
解决方案
因为是异步调用,所以不知道什么时候返回。所以将 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'); } });
}
推荐阅读
- c++ - LLDB - 如何打印全局变量的值?
- excel - 工作表计算 - 字体颜色随单元格值变化而变化
- .htaccess - 带有 .htaccess 的子文件夹内的友好 URL
- bash - 用空行替换文件中的 $Header$ 格式
- c# - WebClient 的 UploadFile 和 UploadData 不发送相同的标头(使用 multipart/form-data)
- c++ - collect2:错误:ld 在使用代码块制作 .so 文件时返回 1 个退出状态(64 位版本)
- swift - 如何在 Watch Kit 中以最佳方式创建自定义按钮并多次使用?
- sql-server - 允许对系统目录进行临时更新
- nginx - 如何将负载测试错误归零
- sonarqube - 在 Windows 中启动 sonarqube 时,Sonarqube 服务器意外停止