Очистка обработчика событий в надстройке Outlook - PullRequest
0 голосов
/ 19 марта 2019

У меня проблемы с обработчиком событий в моем аддоне офиса.Ниже приведен пример кода, который я получил с сайта Microsoft, чтобы объяснить, что я имею в виду.У меня есть файл манифеста, который использует перехват при отправке, а также запуск событий на основе клика.Моя кнопка вызывает appendMessageBodyOnClick, а затем я звоню appendMessageBodyOnSend.Обе функции в основном делают одно и то же.Я никогда не хочу блокировать отправку электронных писем.

Проблема в том, что объект события не очищен должным образом, я думаю.

Сценарий 1 Когда я нажимаю кнопку;который вызывает event.completed(), а затем после того, как я пытаюсь отправить сообщение, он говорит, что мое приложение блокирует сообщение, но затем, когда я пытаюсь отправить снова, оно проходит.

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

Я предполагаю, что это какая-то проблема очистки состояния или состояния.Что я тут не так делаю?

Function-File.js

function appendMessageBodyOnClick(event) {
    // Append string to message body
    event.completed();
}

// In the following example, the checkMessage function has
// been registered as an event handler for ItemSend.
function appendMessageBodyOnSend(event) {
     // Append string to message body
    event.completed({allowEvent = true});
}

1 Ответ

0 голосов
/ 22 марта 2019

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

Одно предложение: добавление строки в тело сообщения должно быть асинхронной функцией.Вызовите event.completed () из функции обратного вызова.(т.е.: убедитесь, что при вызове event.completed () больше ничего не ожидается - как другой асинхронный результат)

Что-то вроде следующего:

Office.context.mailbox.item.body.setAsync("new body", function(asyncResult) {
    // handle success and failure
    event.completed()
});

То же самое будет для вашегоВ сценарии 2 убедитесь, что event.completed () вызывается в самом конце.

...