【发布时间】:2018-11-13 01:21:40
【问题描述】:
我在为 Word 开发 Office.js 插件方面取得了很大成功。插件的常见任务之一是搜索和替换,需要插件中的多个操作按钮使用。因此,我想创建一个将搜索和替换任务分开的函数,这样我就可以避免错误并使代码更加模块化。我一直在尝试使用 Office.js 异步执行模型来执行此操作。
此代码有效(作为 React 类的方法):
replaceX() {
console.log("replaceX");
window.Word.run(async (context: any) => {
const range = context.document.getSelection();
await context.sync();
var query = "X";
var replacement = "gabagool";
var results = range.search(query);
results.load();
await context.sync();
for (var i=0; i<results.items.length; i++) {
results.items[i].insertText(replacement,'Replace');
}
await context.sync();
});
}
但是这段代码失败了:
replaceX() {
console.log("replaceX");
window.Word.run(async (context: any) => {
const range = context.document.getSelection();
await context.sync();
var query = "X";
var replacement = "gabagool";
this.replaceInRange(context, range, query, replacement, {});
await context.sync();
});
}
async replaceInRange(context:any, range:any, query:String, replacement:String, searchOptions:any) {
console.log('replaceInRange');
var results = range.search(query, searchOptions);
results.load();
await context.sync();
for (var i=0; i<results.items.length; i++) {
results.items[i].insertText(replacement,'Replace');
}
}
我尝试了一些变体,但我确定我缺少一些基本的东西。谁能帮我找出正确的方法来处理需要访问父函数上下文的子例程?
【问题讨论】:
标签: javascript reactjs typescript asynchronous office-js