Je veux faire un complément Office avec AngularJS et AngularJS-ui-routeur:ReferenceError: Excel n'est pas défini
<bt:Urls>
<bt:Url id="Contoso.Taskpane3.Url" DefaultValue="https://localhost:3000/addin/test" />
</bt:Urls>
Le nom du module est app
, et le routeur est la suivante:
.state('addinTest', {
url: '/addin/test',
tempalte: 'abc',
controller: 'TestCtrl',
resolve: {
loadMyCtrl: ['$ocLazyLoad', function ($ocLazyLoad) {
return $ocLazyLoad.load('https://appsforoffice.microsoft.com/lib/1/hosted/office.js');
}],
initOffice: ['loadMyCtrl', function (loadMyCtrl) {
Office.initialize = function (reason) {
$(document).ready(function() {
angular.element(document).ready(function() {
angular.bootstrap(document, ['app'])
})
});
}
return Promise.resolve(null)
}]
}
})
Et le contrôleur:
app.controller('TestCtrl', [function() {
function loadDataAndCreateChart() {
Excel.run(function (ctx) {
var sheet = ctx.workbook.worksheets.getActiveWorksheet();
sheet.getRange("A1").values = "Quarterly Sales Report";
return ctx.sync()
})
}
loadDataAndCreateChart()
}])
Je suppose que le chargement du complément écrit Quarterly Sales Report
à A1
. Cependant, j'ai l'erreur suivante:
ReferenceError: Excel is not defined at loadDataAndCreateChart
Est-ce que quelqu'un sait ce qui ne va pas? Est-il correct d'initialiser Office et d'utiliser angular.bootstrap
comme ça?
Je ne l'ai pas testé votre solution ... Je pense mettre 'retourner Promise.resolve (null)' 'après angular.bootstrap (document, ['app']) 'dans mon code, et injecter' initOffice' à 'TestCtrl' résoudra le problème aussi ... – SoftTimur