Office.js回调中断Angular Controller

时间:2015-10-13 10:30:27

标签: angularjs powerpoint office-addins office-js

我正在使用AngularJS处理PowerPoint-AddIn。要获取用户语言,我使用Office.context.displayLanguage,它仅在Office.initialize -Callback中可用。我通过Angular-Factory获得了我的语言字符串。当我将Office.initialize -Callback放入我的Angular Controller中时,它会破坏Controller-Functionality,并且我的页面上的按钮不再有效。我做错了什么?

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对象吗?我没有收到任何错误消息。

1 个答案:

答案 0 :(得分: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/