我已经mean-stack
开发了一个Excel加载项。很久以前,我在某个地方看到了一个关于用office.js
启动AngularJS加载项的答案(遗憾的是我再也找不到该线程了)。建议采用以下解决方案,但我不记得最初的问题是什么:
Office.initialize = function (reason) {
jQuery(document).ready(function () {
angular.bootstrap(document, ['app'])
})
}
现在,我尝试编写<html ng-app="app">
并且不使用上面的块(允许我延迟加载office.js
)。到目前为止,加载项似乎也有效。
所以有人知道<html ng-app="app">
方式是否存在Excel加载项的潜在风险? Office.initialize
不是强制性的,对吧?
编辑1:我刚刚意识到它在所有情况下都不能正常运行,问题出在此处:Starting up an Excel add-in with ocLazyLoad failed in Excel for Windows。
答案 0 :(得分:1)
Office.initialize
是强制性的。我解决这个问题的方式是这样的。
使用$routeProvider
配置负载控制器到部分模板loading.html
的映射。
$routeProvider.when('/',
{
templateUrl: 'views/loading.html',
controller: LoadController
}).when('/app',
{
templateUrl: 'views/app.html',
controller: AppController
});;
到目前为止,该块确保当您使用yourserver.org#/
网址进行加载项的默认启动时,您将显示加载控制器。在你的负载控制器的html中,只需放一个微调器。因此,当您的应用加载,但office.js尚未初始化时,您将显示微调器。
现在,在您的LoadController
中,您将初始化office.js并重定向到另一个局部视图。
function LoadController(/* Your dependencies */){
Office.initialize = function() {
window.location.hash = 'app';
}
}
<{1>}在LoadController
中,角度应用的'/'
网址只显示加载程序。因此,您看到的第一个模板是加载模板 - 但您已经在角度应用中。当office.js初始化时,它只是指向实际体验。