0

我有一个复选框,我可以检查它,然后在我询问他们是否肯定知道的地方显示一个警报。因此,当他们同意警报时,所有练习都将完成。

问题:我设置了一个本地存储项目didAllExercises,所以当我重新打开应用程序时,我得到了这个项目,如果这是真的,则将复选框设置为 true,但我的复选框(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

 localForage.getItem('didAllExercises', (err, value) => {
    if(value){
      this.cheatCheckbox =  true;
     }
})

如何解决此问题,以便仅在您单击它后才显示警报,然后重新打开应用程序并将复选框设置为 true 而不显示相同的警报?

4

1 回答 1

0

而不是ionViewWillEnter,我会打电话localForage.getItemconstructor. 如果这不能解决您的问题,您可以使用名为 checkBoxInitialized 的标志,将其初始化为 true constructor,然后按如下方式使用它:

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;

顺便说一句,你为什么cheatCheckboxcheatButton作为参数传递?您可以随时使用this.cheatCheckbox.

于 2017-05-25T23:22:35.650 回答