在选中的复选框上仅显示一次警报

时间:2017-05-25 19:36:47

标签: typescript ionic2 localforage

我有一个复选框,我可以检查,然后显示警告,我问他们是否确实知道。因此,当他们就警报达成一致时,所有练习都会完成。

问题:我设置了一个本地存储项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而不显示相同警报?

1 个答案:

答案 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