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 回答