我正在使用RESTAPI创建一个列表。在我的JavaScript代码中,我写了这样的东西:
// If I declare 'waitDialog' then it is not get closed by
// calling 'waitDialog.close()'. Without any declaration it works.
var waitDialog;
function createList() {
// Show wait dialog
waitDialog = SP.UI.ModalDialog.showWaitScreenWithNoClose("Please wait...", "Please wait...", 100, 300);
jQuery.ajax({
// List data
},
success: doSuccess,
error: doError
});
}
function doSuccess(data) {
waitDialog.close(); // Close wait dialog
}
function doError(data, errorCode, errorMessage) {
waitDialog.close(); // Close wait dialog
}
如果我用语句var waitDialog;
声明waitDialog
,那么它通过调用waitDialog.close()
来而不起作用。在没有任何声明的情况下,它可以工作并且对话框关闭。我发现了这个问题,它详细阐述了使用var
之间的区别,但没有什么能澄清这个问题。
你知道为什么它在没有声明的情况下工作而没有声明吗?
我无法重新创建您的声明问题。我注意到一件事。。。我认为您需要将SP.UI.DialogResult枚举传递给关闭方法
waitDialog.close(SP.UI.DialogResult.OK);
//显示和隐藏等待javascript
function waitMessage() {
window.parent.eval("window.waitDialog = SP.UI.ModalDialog.showWaitScreenWithNoClose('Processing...', '', 90, 300);");
}
function closeMessage() {
if (window.frameElement != null) {
if (window.parent.waitDialog != null) {
window.parent.waitDialog.close();
}
}
}