javascript - TypeScript 和 this 关键字(SharePoint 框架和 Vue)

标签 javascript typescript sharepoint vue.js this

我正在开发 SharePoint 框架 Web 部件并使用 Vue.js。

鉴于此片段:

export default class MyWorkspaceTestWebPart extends BaseClientSideWebPart<IMyWorkspaceTestWebPartProps> {
  public uol_app;

  public render(): void {
    this.domElement.innerHTML = "some markup"

    this.uol_app = new Vue({
      el: `#vueapp-${this.context.instanceId}`,
      data: {
        announcements: [],
        numOfAnnouncements: 4
      },
      computed: {
        announcementsTrimmed: function() {
          return this.uol_app.announcements.splice(0, this.uol_app.numOfAnnouncements)
        }
      }
    })
  }
}

在最后一个 return 语句中,如何获取 announcementsnumOfAnnouncements Vue 数据属性?

我已经尝试过:

return this.uol_app.announcements.splice(0, this.uol_app.numOfAnnouncements)

return this.uol_app.data.announcements.splice(0, this.uol_app.data.numOfAnnouncements)

return this.data.announcements.splice(0, this.data.numOfAnnouncements)

return this.announcements.splice(0, this.numOfAnnouncements)

return uol_app.announcements.splice(0, this.numOfAnnouncements)

最佳答案

您的问题是 announcementsTrimmed 函数中的 this 并不严格引用您的类,而是引用函数调用的上下文。

解决方案是将其转换为箭头函数,从而保留 this 的上下文:

announcementsTrimmed: () => {
  return this.uol_app.announcements.splice(0, this.uol_app.numOfAnnouncements)
}

或更短:

announcementsTrimmed: () => this.uol_app.announcements.splice(0, this.uol_app.numOfAnnouncements)

要了解更多信息,您可以阅读例如 MDN documentation .

关于javascript - TypeScript 和 this 关键字(SharePoint 框架和 Vue),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45299195/

相关文章:

javascript - 为什么箭头函数隐含的 `return` 在这种情况下不起作用(TS)?

javascript - ParseFloat 在 Javascript 中返回字符串而不是数字

json - 如何在 Sharepoint 2013 中通过 Rest API 使用 ChangeTokenStart 和 ChangeTokenEnd

javascript - 如何让 HTML5 颜色选择器返回颜色名称而不是颜色代码?

javascript - 如何使用绑定(bind)处理程序两次

javascript - 如何计算 Angular 2+ 中表格列的总和?

c# - SharePoint 内存泄漏

c# - OCS/Lync 网站存在指示

javascript - 如何从非标准日期格式在 Javascript 中创建新的 Date()

javascript - 如何将默认图像添加到 Canvas ,同时让用户加载自己的图像