2016-10-19 6 views
1

У меня есть класс Action с его методом do(), где вызывается IonicAlert. Что я хочу сделать сейчас, это что-то вроде Action.do().then(() => { /* do domething */ }); , но только после OK было нажато на предупреждение.Ионное предупреждение: дождитесь нажатия кнопки

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

ответ

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(); 

    }); 
    } 
} 
0

Вот версия, который может вернуть истинным или ложным:

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 
     } 
}) 
0

Это работает для меня

handler:() => { 
      console.log(this.viewCtrl.dismiss()); 
     } 
Смежные вопросы