我使用AngularJS应用创建了一个Excel加载项,我的行为非常奇怪。
在一段时间不活动(约2-3分钟)后,当用户执行需要sync()
的操作时,加载项会消失(变为空白),但不会抛出任何异常
代码的结构如下(只是一个例子):
AngularJS控制器调用:
$scope.hearbeat = function () {
excelService.heartbeat(EXCEL_RESOURCES.WorkSheetName, EXCEL_RESOURCES.TableName);
};
Excel服务是使用Excel.Run
:
this.heartbeat = function (worksheetName, tableName) {
console.log('heartbeat');
var deferred = $q.defer();
Excel.run(function (ctx) {
// Create Proxy for the current opened worksheet
var sheet = ctx.workbook.worksheets.getItem(worksheetName);
sheet.tables.load("name");
var table = sheet.tables.getItem(tableName);
var tableRows = null;
return ctx.sync()
.then(function () {
tableRows = table.rows;
tableRows.add();
})
.then(ctx.sync)
.then(function () {
table = sheet.tables.getItem(tableName);
})
.then(ctx.sync)
.then(function () {
var lastRow = table.getRange().getLastRow();
lastRow.delete();
})
.then(ctx.sync);
}).then(function () {
deferred.resolve(true);
}).catch(function (err) {
var error = excelService.convertError(err);
deferred.reject(error);
});
return deferred.promise;
};
只有在Excel Online中使用加载项时才会发生这种情况,而且甚至不会抛出异常,这真的很奇怪。
有没有办法重新初始化Office.js集成?