我有一个复选框,我可以检查,然后显示警告,我问他们是否确实知道。因此,当他们就警报达成一致时,所有练习都会完成。
问题:我设置了一个本地存储项trait LowPriorityShow {
implicit def showAnything[T] = Show[T](_.toString)
}
object Show extends LowPriorityShow { ... }
所以当我重新打开应用程序时,我得到了这个项目,如果这是真的,那么将复选框设置为true,但我的复选框上有didAllExercises
并检查是否选中了复选框而不是显示提醒。因此,每当我重新打开应用程序且(onChange) event
的项目为真
这是复选框:didAllExercises
这是我的<ion-checkbox checked="false" [(ngModel)]="cheatCheckbox" (ionChange)="cheatButton(cheatCheckbox)"></ion-checkbox>
:
cheatButton()
我在这里拨打cheatButton(cheatCheckbox: boolean){
if(cheatCheckbox){
localForage.setItem("showAlert", true);
console.log('ccTrue', cheatCheckbox);
//DONT SHOW ALERT WHEN ALLEX ARE DONE AND YOU CLOSE AND OPENS THE APP AGAIN AND NAVIGATE TO OEFENINGEN
setTimeout(() => {
localForage.getItem("showAlert", (err, value) => {
if(value){
this.showAlert = value;
console.log('!notRun', value);
}
})
},400)
setTimeout(() => {
let alert = this.alertCtrl.create({
title: 'Voltooi alle oefeninen',
message: 'Weet je zeker dat je alle oefeningen gedaan hebt?',
buttons: [
{
text: 'Nee',
role: 'cancel',
handler: () => {
console.log('Cancel clicked');
this.cheatCheckbox = false;
}
},
{
text: 'Ja ik weet het zeker!',
handler: () => {
this.allExercisesDone = true;
localForage.setItem('didAllExercises', [true, this.data]);
}
}
]
});
alert.present();
},400)
}
}
中的getItem method
:
ionViewWillEnter
如何修复此问题,只有在您点击警报时才显示警报,而不是重新打开应用程序并将复选框设置为true而不显示相同警报?
答案 0 :(得分:0)
而不是ionViewWillEnter
,我会在localForage.getItem
中致电constructor
。如果这不能解决您的问题,您可以使用名为checkBoxInitialized的标志,在constructor
中将其初始化为true,然后按如下方式使用它:
localForage.getItem('didAllExercises', (err, value) => {
if(value){
this.cheatCheckbox = true;
} else {
this.cheatCheckbox = false;
}
this.checkBoxInitialized = false;
})
然后将cheatButton修改为:
cheatButton(cheatCheckbox: boolean){
if(cheatCheckbox && this.checkBoxInitialized){
...
}else
this.checkBoxInitialized = true;
BTW,您为什么要将cheatCheckbox
作为参数传递给cheatButton
?您始终可以使用this.cheatCheckbox
。