2

AngularJS を使用して PowerPoint-AddIn に取り組んでいます。ユーザー言語を取得するには、Office.initialize -Callback 内でのみ使用できる Office.context.displayLanguage を使用します。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>その中にAngularモジュールをブートストラップするだけです:

<!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 に答える