2014-11-03 2 views
2

Я создаю список, используя API REST. В моем коде JavaScript я написал что-то вроде этого:Закрытие showWaitScreenWithNoClose в SharePoint CSOM

// 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 
} 

Если я объявляю waitDialog с утверждением var waitDialog; тогда он делает не работы по телефону waitDialog.close(). Без какой-либо декларации он работает, и диалог закрыт. Я нашел this question, который подробно описывает разницу между использованием var, но ничего, что бы прояснить этот случай.

Любая идея, почему она работает без объявления, а не с декларацией?

ответ

2

Я не смог воссоздать вашу декларацию. Одна вещь, которую я заметил ... Я считаю, что вам нужно пройти SP.UI.DialogResult перечислимы к закрытым способом

waitDialog.close(SP.UI.DialogResult.OK); 
0

// показать и скрыть ожидания на нем 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(); 
     } 
    } 
} 
+0

Какой смысл из eval? – JJJ

Смежные вопросы