如何结合 aurelia-materialize-bridge 和 sweetalert2

How to combine aurelia-materialize-bridge and sweetalert2

我想在弹出窗口中放置一个表单。
我找到了解决方案,但我正在寻找更清洁的东西。

我找不到使用 swal 弹出现有标签的方法。
所以我在我的模板中创建了一个隐藏表单:

<div id="myHiddenForm"><form role="form">
    <md-input class="email" md-type="email" md-label="Email" md-validate="true" 
        md-validate-error="invalid email">
        <i md-prefix class="material-icons">account_circle</i>
    </md-input>
    <button type="submit" md-button>
        <i class="left material-icons">done</i>Submit
    </button>
</form></div>

然后我用它的 innerHTML 创建了弹出窗口。

swal({
  html: document.getElementById('myHiddenForm').innerHTML,
  showConfirmButton: false,
}).catch(swal.noop);

然后我可以将回调附加到提交按钮,这终于起作用了。

显然,我不能使用md-value.bind,因为显示的表格是原始表格的副本。
我可以使用 document.querySelectorAll('#myHiddenForm .email input')[0].value 访问输入的值,但我想知道是否有更好的方法来做到这一点?

也许有一个很好的方法来结合 aurelia-materialize-bridge 和 sweetalert2。

我知道这个 webapp 的其他地方都有 modal component but it's not capable of keeping the focus inside the modal popup ; plus I already use swal2 因为,你知道,它太棒了。

经过大量测试和完整阅读 sweetalert2 文档后,我找到了处理此问题的正确方法。我们只需要移动 <form> 节点。

swal({
  html: '<span></span>'
  , showCloseButton: true
  , showConfirmButton: false
  , onBeforeOpen: dom => swal.getContent()
        .appendChild(document.querySelectorAll('#myHiddenForm form'))
  , onClose: dom => document.getElementById('myHiddenForm')
        .appendChild(swal.getContent().querySelectorAll('form'))
}).catch(swal.noop);

与 aurelia 一起使用非常完美,因为它保留了所有内容(监视器、事件、验证...)。
我们甚至不需要像我那样手动绑定提交按钮,我们可以使用aurelia的常规方式。

结论:RTFM !