在项目

时间:2018-03-08 07:58:11

标签: ms-office aurelia office-js aurelia-router

我正在创建一个Microsoft Office Project Professional 2016加载项(不是VSTO,而是新的Office add-ins model)。我已经制作了一个基本的Web应用程序,使用ASP.NET Core和Aurelia,Webpack和TypeScript(还没有引用任何office-js apis),并部署了加载项清单。这有效,我可以在Project的侧窗格中加载加载项。

问题是当我向我的应用添加路由器时。在Project中托管时,应用程序将以静默方式失败,并且不会在页面中呈现。通过附加Windows 10 F12开发人员工具并查看控制台,我可以看到Aurelia应用程序已启动,并且在app.ts中调用了configureRouter()。在那之后似乎有些事情失败了,但我找不到在哪里放置断点以获取更多信息。如果我尝试挂钩component lifecycle,则调用bind但不调用attached

无论是否使用路由器,都可以在Chrome,Firefox,Edge和IE 11中正确加载网络应用。

1 个答案:

答案 0 :(得分:3)

这是因为在Office AddOn上下文中禁用了history.pushStatehistory.replaceState,因此路由器在尝试调用这些函数时会失败(它支持历史向前/向后导航)。

您可以在调试器中找到这个,方法是打开您的vendor.bundle并搜索BrowserHistory.prototype.navigate和/或BrowserHistory.prototype.activate并在其开头添加断点。其中一个应该失败。

您可以尝试同时设置config.options.pushState = falseconfig.options.hashChange = false以完全禁用状态管理(afaik),但我自己从未尝试过这样做。

您可能需要推送适用于此项目的自己的精简BrowserHistory实现,并简单地将现有的HistoryBrowserHistory键替换为您的根目录中的实现容器