Outlook Addin事件处理程序清理



我在办公室Addin中的活动处理程序有问题。以下是我从Microsoft网站获得的示例代码,以解释我的意思。我有一个清单文件,该文件使用日期挂钩以及基于点击的事件触发。我的按钮呼叫appendMessageBodyOnClick和ONSEND我致电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});
}

不确定这是否会有所帮助,但是我也面临着一些看似不一致的行为,同时了解该事件已完全完成。一旦我修复了边缘箱,它就可以了。

一个建议:将字符串附加到消息主体应该是异步函数。从回调函数内部调用event.completed()。(即:确保何时调用event.completed(),没有其他等待的方式 - 另一个异步结果)

类似以下内容:

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

对于您的方案2也是如此,请确保event.completed()在最后调用。

相关内容

  • 没有找到相关文章

最新更新