Nativescript angular 使用对话框确认
Nativescript angular using dialog confirm
我有一个实用程序 class,其中包含使用 ui/dialogs
的 showMsg 函数
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()
中发生的事情之前执行
誓约不等。您必须使用 async/await
helpers 或等待 showMsg
完成,例如组件中的 showMsg().then((result)=> { //anything you want to do after dialog is closed })
。
我有一个实用程序 class,其中包含使用 ui/dialogs
的 showMsg 函数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()
中发生的事情之前执行誓约不等。您必须使用 async/await
helpers 或等待 showMsg
完成,例如组件中的 showMsg().then((result)=> { //anything you want to do after dialog is closed })
。