0

シンプルなWebベースのテキストエディタを作成していて、「変更を保存しますか?」のようなものを実装しようとしています。ユーザーがファイルを開こうとし、現在のファイルに未保存の変更がある場合のダイアログ。

コードは次のようなものです。

function openFile() {
    if (hasChanges === true) {
       $("#save-changes-dialog).dialog("open");
    }

    // file opening stuff goes here
}

ダイアログが開かれ、ファイルを開くコードは、ダイアログの結果を待つのではなく、ダイアログを開いた直後に実行されるため、これは明らかに機能しません。

この問題を解決するための最良のアプローチは何ですか?[変更を保存]ダイアログのボタンの動作を動的に変更して、ファイルを開くコードがダイアログボタン自体によって呼び出されるようにしましたが、少し混乱しているように見え、タイミングの問題も発生していました。 AJAX呼び出し。

これはかなり頻繁に発生することのように思えますが、問題へのアプローチ方法について明確な答えを見つけることができないようです。助けてくれてありがとう!

4

2 に答える 2

0

ファイルを開くものは「ここ」には行きません。ダイアログのボタンハンドラーに入ります。

ダイアログを定義したとき:

$("#save-changes-dialog").dialog({
        resizable: false,
        modal: true,
        buttons: {
            Save: function() {
                // file opening stuff goes HERE instead!
            },
            Cancel: function() {
                $(this).dialog("close");
            }
        }
    });
于 2012-11-23T13:56:15.317 に答える
0

これを試して:

function checkForChanges() {
    if (hasChanges === true) {
       $("#save-changes-dialog").dialog("open");
       return false;
    }
    openFile();
}

function openFile(){
    // file opening stuff goes here
}

以前にopenFileを呼び出していた場所ならどこでも、checkForChangesを呼び出す必要があります。その後、ダイアログで、任意のイベントでopenFile()を呼び出すことができます。

于 2012-11-23T13:58:36.263 に答える