2

我正在使用 AngularJS 开发 PowerPoint-AddIn。要获取用户语言,我使用 Office.context.displayLanguage,它仅在 Office.initialize -Callback 中可用。我通过 Angular-Factory 获得我的语言字符串。当我将 Office.initialize -Callback 放在我的 Angular 控制器中时,它会破坏控制器功能,并且我的页面上的任何按钮都将不再起作用。我究竟做错了什么?

myApp.controller('angularHomeController', ['$scope', 'lang', function ($scope, lang) {
    $scope.lang = lang.getLocaleStrings("en-US");
    Office.initialize = function (reason) {
        $scope.lang = lang.getLocaleStrings(Office.context.displayLanguage);
    }
}]);

我将语言默认设置为英语,但我希望在初始化文档时更改它并且我可以访问 displayLanguage。在我将 Office.initialize -Callback 放入我的控制器之前,我的应用程序运行良好。我应该以某种方式注入 Office-Object 吗?我没有收到任何错误消息。

4

1 回答 1

5

正如我在评论中提到的那样,我遇到了类似的问题。您只需在标签中声明Office.initialize并在<head>其中引导您的角度模块:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <script src="https://appsforoffice.microsoft.com/lib/1/hosted/office.js" type="text/javascript"></script>

    <!-- Add the following script -->
    <script type="text/javascript">
        Office.initialize = function (reason) {
            angular.bootstrap(document, ['myOfficeModule']);
        };
    </script>

    <script type="text/javascript" src="../../Scripts/Angular/angular.min.js"></script>
    <!-- Other scripts -->

</head>
<body>
    <ng-view></ng-view>
</body>
</html>

注意:ng-app="myOfficeModule"手动引导时不再需要。

它对我有用,现在Office可以从我的服务访问该对象。我希望它也适合你。

使用的来源:http: //www.chaosm.net/blog/2014/07/27/load-angularjs-after-office-initialized/

于 2015-10-14T16:19:34.457 回答