0

我正在开发一个 Excel 加载项mean-stack。很久以前,我在某个地方看到了一个关于启动 AngularJS 插件的答案office.js(不幸的是,我再也找不到线程了)。提出了以下解决方案,但我不记得最初的问题是什么:

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:我刚刚意识到它在所有情况下都不能正常工作,这是问题所在:在 Excel for Windows 中使用 ocLazyLoad 启动 Excel 加载项失败

4

1 回答 1

1

Office.initialize是强制性的。我解决这个问题的方法是这样的。

使用$routeProvider配置负载控制器到部分模板的映射loading.html

$routeProvider.when('/',
{
    templateUrl: 'views/loading.html',
    controller: LoadController
}).when('/app',
{
    templateUrl: 'views/app.html',
    controller: AppController
});;

到目前为止,该块可确保您在加载项的默认启动时使用yourserver.org#/url 显示负载控制器。在负载控制器的 html 中,只需放置一个微调器。因此,当您的应用程序加载,但 office.js 尚未初始化时,您将显示微调器。

现在,您LoadController将初始化 office.js 并重定向到另一个局部视图。

function LoadController(/* Your dependencies */){
    Office.initialize = function() {
         window.location.hash = 'app';
    }
}

在Angular 应用程序LoadController'/'url 仅显示加载器的位置。因此,您看到的第一个模板是加载模板 - 但您已经在 Angular 应用程序中。当 office.js 初始化时,它只是将您指向实际体验。

于 2018-01-02T11:22:08.777 回答