2015-10-13 36 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事件和模型不起作用。你能帮忙吗? –