Ionic警告:等待按钮被按下

3

我有一个类Action,它有一个方法do(),其中调用了IonicAlert。 现在我想做的是,在警报框上点击OK后,才会调用像这样的内容: Action.do().then(() => { /* 做一些事情 */ });

do(): Promise<boolean> {

    let alert = this.alertCtrl.create({
      buttons: [{
        text: 'OK',
        handler: () => {
          alert.dismiss().then( () => { /* do something */ });
          return false;
        }
      }]
    });

    alert.present();
    return null;
  }
}

我只是添加了return null;以避免出现错误,但它当然不起作用。 有什么想法,如何解决这个问题?谢谢
附注:我也在ionic论坛上发布了这个问题:https://forum.ionicframework.com/t/ionic-alert-wait-until-button-is-pressed/67448
4个回答

8

在这个网站的帮助下找到了解决方案:https://basarat.gitbooks.io/typescript/content/docs/promise.html

do(): Promise<boolean> {
    return new Promise((resolve, reject) => {

      let alert = this.alertCtrl.create({
        buttons: [{
          text: 'OK',
          handler: () => {
            alert.dismiss().then(() => { resolve(true); });
            return false;
          }
        }]
      });

      alert.present();

    });
  }
}

7

下面是一个可以返回true或false的版本:

 showConfirm(): Promise<boolean> {
    return new Promise((resolve, reject) =>{
      const confirm = this.alertCtrl.create({
        title : 'Are you sure ?',
        buttons: [
          {
            text: 'Yes',
            handler:_=> resolve(true)
          },
          {
            text: 'No',
            handler:_=> resolve(false)
          }
        ]
      }).present();
    })
  }

调用 Promise :

this.showConfirm().then((result) => {
        if(result){
          // do something
        }
})

1

这对我有效

handler: () => {
           console.log(this.viewCtrl.dismiss());
         }

0

那段代码在Ionic4中对我没用,但这个可以:

presentAlert():Promise<boolean> {
  return new Promise((resolve, reject) => {
    const ctl = this.alertController;
    let alert:any = this.alertController.create({
      buttons: [{
        text: 'OK',
        handler: () => {
          ctl.dismiss().then(() => { resolve(true); });
          return false;
        }
      }]
    }).then((dlg) => dlg.present());
  });
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接