一个 JavaScript 函数,需要提示用户输入一些数据,然后通过 Ajax 提交该数据。来自 WinForms/WPF 背景,我的第一个想法是做这样的事情:
function promptForData() {
$('#my-form').dialog({
autoOpen: true,
modal: true,
buttons: {
"OK": function () {
alert("Added");
// Unlike WinForms I cannot
// set a dialog result here
$(this).dialog("close");
},
"Cancel": function () {
alert("Canceled");
$(this).dialog("close");
}
}
});
}
function update() {
var data = promptForData();
// Unlike WinForms execution continues immediately even
// for a "modal" dialog (jQuery UI Dialog, modal: true)
makeAjaxCall(data);
}
显而易见的解决方案似乎是重组代码,以便makeAjaxCall(data)
在对话框的“OK”处理程序中发生。
由于所涉及的实际代码要复杂得多,我确实希望将提示数据与使用数据分开。是否有合适的模式来做到这一点?
注意:显示的实际实现使用 jQuery UI,但我认为问题与此无关。