打开UI对话框时无法访问漫游设置

时间:2018-02-12 12:48:11

标签: outlook-addin office-js outlook-web-addins

我可以通过Outlook Add-in中的侧面板访问漫游设置。但是当我尝试访问漫游设置时,如果UI对话框(DialogAsync)已打开。它变得未定义。

var _settings = Office.context.roamingSettings;
var numberDetails = _settings.get('PHONENUMBERSLIST');

2 个答案:

答案 0 :(得分:3)

在对话框中只能调用两个Office.js API:

  • messageParent
  • isSetSupported

请参阅is文章中关于1/3向下的说明:Use the Dialog API in your Office Add-ins

答案 1 :(得分:1)

RoamingSettings仅在创建它的框架中可用。如果需要在对话框和侧面板之间共享某些值,可以将这些值作为参数传递到url:

var url = new URI('Dialog/myDialog.html').absoluteTo(window.location).toString();
url += '?myvalue=' + Office.context.roamingSettings.get('myvalue')
        + '&othervalue=' + Office.context.roamingSettings.get('othervalue');
var dialogOptions = { width: 20, height: 35, displayInIframe: true };

Office.context.ui.displayDialogAsync(url, dialogOptions, function (result) {
    settingsDialog = result.value;
    settingsDialog.addEventHandler(Microsoft.Office.WebExtension.EventType.DialogMessageReceived, receiveSettingsMessage);
    settingsDialog.addEventHandler(Microsoft.Office.WebExtension.EventType.DialogEventReceived, settingsDialogClosed);
});

然后,在对话框中,您可以使用它们或使用$(document).ready()getUrlParameter('myvalue')内再次设置它们。

您还可以使用以下方法将所需的值发送回侧面板:

function sendMessage(param) {
    Office.context.ui.messageParent(JSON.stringify(param));
}