我在这里回答我的问题,可能对某人有帮助。因此,在我的情况下,如果服务器发回带有表单的页面并且模式对话框打开,则意味着表单提交时出现错误并且无法在服务器端接受。要检查这些条件并在必要时关闭模式对话框并刷新底层页面,我制作了一个脚本:
up.on("up:fragment:inserted", function(ev, fragment) {
if (up.modal.isOpen() && !fragment.getElementsByTagName("form").length) {
up.modal.close()
}
})
up.on("up:modal:closed", function(ev) {
up.reload("main")
})
编辑当我使用上述方法时,它工作正常,直到我需要将没有形式的内容放入模态。在那种情况下,我的模态只是打开并立即关闭,所以我重新设计了我以前的实现,如下所示:
let submit_from_modal = false;
up.on("up:fragment:inserted", function(ev, fragment) {
if (up.modal.isOpen() && !fragment.getElementsByTagName("form").length && submit_from_modal) {
up.modal.close()
up.emit("modal:form:submit:success")
}
submit_from_modal = false
})
up.on("up:modal:close", function() {
submit_from_modal = false
})
up.on("modal:form:submit:success", function(ev) {
up.reload("main")
})
up.on("up:form:submit", function() {
if (up.modal.isOpen()) {
submit_from_modal = true
}
})