读取API对象ooxml前是否需调用load?代码Lint报错答疑
问题解答
读取
ooxml前不需要调用load()方法getOoxml()返回的是Office.js中的「值类型对象」,这类对象和文档、段落这类「实体对象」不同,它本身就是专门用来获取单一值的,执行context.sync()后直接读取value属性即可,无需提前加载。Lint报错的原因
office-addins/load-object-before-read规则的检测逻辑没有区分「实体对象」和「值类型对象」,误将getOoxml()的返回值判定为需要加载的实体对象,所以触发了错误提示。传入
value提示无属性的原因
这个值类型对象不存在可通过load()加载的属性集合,它的value是同步后直接可用的属性,因此调用load('value')会提示对象无此属性。解决方案
直接在代码上方添加注释跳过该Lint规则的检测即可:function getSelectionOoxml(): Promise<string> { return new Promise((resolve) => { return Word.run(async (context) => { // eslint-disable-next-line office-addins/load-object-before-read const ooxml = context.document.getSelection().getOoxml() await context.sync() resolve(ooxml.value) }) }) }
内容的提问来源于stack exchange,提问作者dotNET
相关产品推荐
相关产品推荐

