首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OfficeJS addHandlerAsync回调不执行角分量方法

OfficeJS addHandlerAsync回调不执行角分量方法
EN

Stack Overflow用户
提问于 2020-01-25 10:26:11
回答 1查看 351关注 0票数 2

我正在编写outlook外接程序(在角5中),我正在实现一个可定位的任务窗格,我一直在跟踪Microsoft:在Outlook中实现pinnable任务窗格的文档。

我想要做的是,当Outlook中选定的邮件被更改时,我需要更新任务窗格UI的内容。

在我的Component.TS上添加了以下addHandlerSync事件侦听器,用于邮件选择上的更改:

代码语言:javascript
复制
ngOnInit() {
    Office.context.mailbox.addHandlerAsync(Office.EventType.ItemChanged, this.selectMailChanged);
}
selectMailChanged(){
    this.getPhoneNumbers() //This function gets phone numbers on the email
}

以上代码的错误是

this.getPhoneNumbers is not defined

我尝试将这个this.getPhoneNumbers封装在区域(基于MS文档:触发UI更新)上,但它没有定义返回zone.run。

如何在addHandlerAsync回调中调用角分量方法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-26 16:06:42

好的老著名的this关键词问题。

由于上下文的差异,您得到了错误消息。在编写代码时,方法selectMailChanged引用组件中的方法getPhoneNumbers (我希望它已经实现)。因此,从编码的角度看,它看起来很好。

但是当事件启动时-它不再有组件的上下文了,因为它只是调用一个回调函数-所以它实际上没有所有外部世界的信息,除了它正在调用的函数。你可以在下面读到一些很好的答案:

  1. 在回调里面?
  2. https://thenewstack.io/mastering-javascript-callbacks-bind-apply-call/
  3. https://technology.amis.nl/2016/08/23/access-the-original-calling-context-in-a-callback-function-in-typescript/

getPhoneNumbers中的功能移到回调方法中,您就不会遇到这个问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59908359

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档