我使用angular-cli创建了一个新项目,并向该项目添加了ng-office-ui-fabric和依赖项。我在index.html中添加了https://appsforoffice.microsoft.com/lib/1/hosted/office.js,并在angular.json中添加了polyfills,一切都很好。
在Word中,我可以很好地旁加载该加载项,并且我创建的任务窗格也可以加载并正在工作。
但是清单中有一个函数文件,该函数文件允许功能区上的按钮直接从function-file.html调用javascript函数。我可以将js和html文件作为资产添加到项目中,但是我想在TS中而不是JS中进行编程。我想将页面添加到项目中并定义该组件内部的功能也应该起作用。但是,将该页面作为功能文件添加到清单似乎无效。
所以我的问题是,如果office.js能够从单独的html文件中调用javascript函数,我该如何在我用打字稿编写的组件的路由角页面上发布相同的函数?我需要将其导出到任何地方吗?是晚装吗?为什么不起作用?还是应该在main.ts中定义这些功能?
答案 0 :(得分:1)
从功能区按钮打开的function-file.html在任务窗格中的Internet Explorer完全独立的实例中打开,因此在JavaScript引擎,执行上下文和会话中完全独立。他们甚至不共享会话存储。他们只能通过本地存储或通过一些常见的服务器端数据存储相互通信。
当您使用具有自定义功能区按钮的Office加载项的单页框架时,基本上有两种选择:
(1)偏离纯单页设计,创建一个页面并仅将其用作按钮的启动目标。实际上,这是一个与主单页应用程序托管在同一域中的单独应用程序。为简单起见,我建议使用此选项。
(2)在主应用程序中包含希望功能区启动的功能,并为其分配路由。使用路由作为应用清单中函数的URL。但是请注意,如果执行此操作,则将在功能区按钮启动的IE实例中加载单页应用程序的完整第二个实例。必须对应用程序的启动逻辑进行设计,以便当它通过特殊路线启动时,它不会尝试加载将在任务窗格中加载的标准启动视图。