ユーザーにデータの入力を求め、Ajaxを介してそのデータを送信する必要があるJavaScript関数。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を使用していますが、問題はそれとは無関係だと思います。