如何在MVC项目中使用JScript Promises

时间:2019-05-01 00:43:49

标签: c# asp.net-mvc sweetalert2

我目前在我的 MVC项目中使用SweetAlert,并且工作正常。但是,我需要向其中添加一些单选按钮。此功能似乎是SweetAlert Version 2的一部分。

现在,如果我执行以下不用等待字词

   function SampleCode() {
        var formValues = await swal.fire({
            title: 'Multiple inputs',
            html:
                '<input id="swal-input1">' +
                '<input type="checkbox" id="swal-input2" class="swal2-input">',
            focusConfirm: false,
            preConfirm: () => {
                return [
                    document.getElementById('swal-input1').value,
                    document.getElementById('swal-input2').value
                ];
            }
        });

        //Swal.fire(JSON.stringify(formValues));
    }

然后将弹出对话框。但是,如果我取消对第二个SweetAlert的注释,那么它当然将无法工作,因为我需要利用Promise。如何在MVC项目的.cshtml文件中的上述函数中执行此操作?感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

documentation(说明“不支持多个输入,您可以使用html和preConfirm参数...实现”的部分)中,这是一个CodePen,它显示的内容与我认为的更接近可能正在尝试做。好像您忘记了将外部函数声明为异步的,这可能是导致错误的原因:https://codepen.io/anon/pen/gyNYep?&editable=true

作为参考,JavaScript需要看起来像这样:

(async function getFormValues () {
const {value: formValues} = await Swal.fire({
  title: 'Multiple inputs',
  html:
    '<input id="swal-input1" class="swal2-input">' +
    '<input id="swal-input2" class="swal2-input">',
  focusConfirm: false,
  preConfirm: () => {
    return [
      document.getElementById('swal-input1').value,
      document.getElementById('swal-input2').value
    ]
  }
})

if (formValues) {
  Swal.fire(JSON.stringify(formValues))
}
})()