Как передать модель в диалог Office 365 из Word 2016?

Я играл с надстройкой Office 365 для слова MS. У меня есть диалог для управления выбранным изображением слова. Мне нужно передать это изображение (возможно, это значение Base64) в мой диалог, чтобы я мог поиграть с изображением, прежде чем возвращаться к слову (в том же месте).

Я использую приведенный ниже код для отображения всплывающего окна:

Office.context.ui.displayDialogAsync("https://" + location.host + "/Views/ImageManager.html", { width: 64, height: 55, requireHTTPS: true }, function (asyncResult) {
    dialog = asyncResult.value;
    dialog.addEventHandler(Office.EventType.DialogMessageReceived, processMessage);
    if (asyncResult.status !== Office.AsyncResultStatus.Succeeded) {
        return;
    }
});

Что я хотел сделать?

Когда пользователь выбирает изображение для игры с ним в текстовом документе и щелкает кнопку ленты, чтобы открыть это диалоговое окно, мне нужно передать это изображение в диалоговое окно для отображения в диалоговом окне.

Как я могу передать свою модель изображения в диалог?


person Khawaja Asim    schedule 03.03.2017    source источник


Ответы (1)


Есть как минимум два способа передать информацию в диалог:

  • Передайте его как параметр запроса в URL-адресе, который вы передаете в displayDialogAsync ().
  • Сохраните его в window.localStorage в сценарии хоста и извлеките оттуда в сценарии на странице диалога.

ОБНОВЛЕНИЕ. Вы можете проголосовать за этот голосовой запрос пользователя Office Dev для улучшения связи между диалоговым окном и его хостом: https://officespdev.uservoice.com/forums/224641-feature-requests-and-feedback/suggestions/17196659-Improve-custom-dialog

person Rick Kirkham    schedule 03.03.2017
comment
К этому я бы добавил, что localStorage небезопасен, если у вас одновременно открыто несколько документов (разные окна Word или разные вкладки Word Online). Таким образом, параметр URL, вероятно, лучше всего, за исключением того, что у него есть ограничение на длину. Вы можете использовать гибридный подход, сохраняя его в localStorage, используя случайный ключ, который вы передаете в URL-адресе (или делаете этот ключ меткой времени?) А затем в какой-то момент выбросить старые значения? ... - person Michael Zlatkovsky - Microsoft; 03.03.2017
comment
Однако я думал, что так же, как дочернее диалоговое окно может отправлять сообщения родителю, я думал, что родитель может также передать сообщение дочернему элементу, чтобы сформировать двустороннюю связь. Позвольте мне проверить это и вернуться к вам. - person Michael Zlatkovsky - Microsoft; 03.03.2017