Typescript 选中复选框仅显示警报一次

Typescript 选中复选框仅显示警报一次,typescript,ionic2,localforage,Typescript,Ionic2,Localforage,我有一个复选框,我可以检查,然后显示一个警报,我问他们是否确实知道。因此,当他们在警报上达成一致时,所有的练习都将结束 问题:我设置了一个本地存储项目didAllExercises,因此当我重新打开应用程序时,我会得到这个项目,如果这是真的,则将复选框设置为真,但我的复选框上有一个(onChange)事件,并检查复选框是否选中而不是显示警报。因此,每当我重新打开应用程序时,警报就会显示,didAllExercises项为true 下面是复选框: 这是我的作弊按钮(): 在这里,我调用ionVie

我有一个复选框,我可以检查,然后显示一个警报,我问他们是否确实知道。因此,当他们在警报上达成一致时,所有的练习都将结束

问题:我设置了一个本地存储项目
didAllExercises
,因此当我重新打开应用程序时,我会得到这个项目,如果这是真的,则将复选框设置为真,但我的复选框上有一个
(onChange)事件
,并检查复选框是否选中而不是显示警报。因此,每当我重新打开应用程序时,警报就会显示,
didAllExercises
项为true

下面是复选框:

这是我的
作弊按钮()

在这里,我调用
ionViewWillEnter
中的
getItem方法:

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

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

而不是
ionViewWillEnter
,我将在
构造函数中调用
localfower.getItem
。如果这不能解决您的问题,您可以使用一个名为checkBoxInitialized的标志,在
构造函数中将其初始化为true,然后按如下方式使用它:

localForage.getItem('didAllExercises', (err, value) => {
    if(value){
      this.cheatCheckbox =  true;
     } else {
      this.cheatCheckbox =  false;
     }
    this.checkBoxInitialized = false;
})
然后将按钮修改为:

cheatButton(cheatCheckbox: boolean){

    if(cheatCheckbox && this.checkBoxInitialized){ 
    ...

    }else
       this.checkBoxInitialized = true;

顺便问一下,为什么要将
cheatCheckbox
作为参数传递给
cheatButton
?你总是可以使用
this.cheatCheckbox

你是说设置
this.cheatCheckbox=truelocalfower.getItem
中的code>触发你的
cheatButton
功能?@Ari是的
cheatButton
功能由true上的复选框触发,但如果我重新打开应用程序并完成所有练习,那么
value=true
将再次显示警报
cheatButton(cheatCheckbox: boolean){

    if(cheatCheckbox && this.checkBoxInitialized){ 
    ...

    }else
       this.checkBoxInitialized = true;