2015-10-13 43 views
2

我正在使用AngularJS在PowerPoint-AddIn上工作。要獲取用戶語言,我使用僅在Office.initialize -Callback中可用的Office.context.displayLanguage。我通過Angular-Factory獲得我的語言字符串。當我將Office.initialize -Callback放入我的Angular Controller中時,它會打破控制器功能,並且我的頁面上的任何按鈕都不起作用。我究竟做錯了什麼?Office.js回調打破角控制器

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對象嗎?我沒有收到任何錯誤消息。

+0

我有一種同樣的問題,我有一個'outlookService'(角),我盡我'Office'調用。但函數'Office.initialize'永遠不會被調用。仍然在努力,我在網上發現了這個:http://www.chaosm.net/blog/2014/07/27/load-angularjs-after-office-initialized/讓我保持最新狀態。 ;) – Elfayer

回答

5

我有一個類似的問題,正如我在評論中提到的。 你只需要在你的<head>標籤聲明Office.initialize和引導它裏面的角模塊:

<!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/

+0

Elfayer代碼必須工作。角度應用程序應在Office.initialize事件後手動觸發 –

+0

@Elfayer一旦我完成了該辦公室的初始化,但Angular事件和模型不起作用。你能幫忙嗎? –