Nativescript angular使用对话框确认

时间:2018-02-15 03:13:52

标签: dialog angular2-nativescript

我有一个utils类,其中包含showMsg函数以使用ui / dialogs

showMsg(titleTxt: string, msg: string, btnTxt: string, type: string){
 switch(type){
   case 'confirm':
    dialogs.confirm({
          title: titleTxt,
          message: msg,
          okButtonText: btnTxt,
          cancelButtonText: 'No'
      }).then((result) => {
          console.log(titleTxt + " Dialog closed!" + result);
          return result;
    });
      break;
  default:
    dialogs.alert({
          title: titleTxt,
          message: msg,
          okButtonText: btnTxt
      }).then(() => {
          console.log(titleTxt + " Dialog closed!");
          return true;
    });
}

}

问题是当我从另一个组件调用此函数进行确认对话框时,组件在继续之前不会等待对话框中的结果。我希望它根据用户响应有条件地继续。

编辑:

新的showMsg功能

showMsg(titleTxt: string, msg: string, btnTxt: string, type: string){
   switch(type.toLowerCase()){
  case 'confirm':
    return dialogs.confirm({
          title: titleTxt,
          message: msg,
          okButtonText: btnTxt,
          cancelButtonText: 'No'
      }).then((result) => {
          console.log(titleTxt + " Dialog closed!" + result);
          return result;
    });
  default:
   return dialogs.alert({
          title: titleTxt,
          message: msg,
          okButtonText: btnTxt
      }).then(() => {
          console.log(titleTxt + " Dialog closed!");
          return true;
    });
  }
}

现在调用showMsg函数

        this.myutil.showMsg('Update Cleaning Status', 'Are you Sure?', 'Yes', 'Confirm').then((result)=> { 
            console.log('In then: ' + result);
            alert(result);
         });

不幸的是,在调用函数之后,我们无法获得任何代码,因为它会在.then()

中发生之前执行

1 个答案:

答案 0 :(得分:0)

它肯定不会等待,因为这是一个承诺。您必须使用async/await helpers或等待showMsg完成,例如您的组件中的showMsg().then((result)=> { //anything you want to do after dialog is closed })