我有一个课程Action
,其方法为do()
,其中 IonicAlert 被调用。
我现在要做的是,我称之为
Action.do().then( () => { /* do domething */ } );
但只有在警报点击确定后才会显示。
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;
只是为了没有错误,但当然它不起作用。
任何想法,如何解决这个问题?感谢
PS:我也把它发布到离子论坛:https://forum.ionicframework.com/t/ionic-alert-wait-until-button-is-pressed/67448
答案 0 :(得分:4)
在此网站的帮助下找到解决方案: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();
});
}
}
答案 1 :(得分:4)
这是一个可以返回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();
})
}
致电承诺:
this.showConfirm().then((result) => {
if(result){
// do something
}
})
答案 2 :(得分:1)
这对我有用
handler: () => {
console.log(this.viewCtrl.dismiss());
}
答案 3 :(得分: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());
});
}