【问题标题】:How to highlight specific words in a selected range?如何突出显示选定范围内的特定单词?
【发布时间】:2019-04-06 17:14:00
【问题描述】:

基本上,我必须突出显示我在数组中收到的单词。在控制台上,我在第一次迭代后收到以下错误:

未处理的拒绝 PropertyNotLoaded:属性“项目”不可用。在读取属性值之前,调用包含对象的 load 方法,并在关联的请求上下文中调用“context.sync()”。

代码如下:

 var color = systemService.getColor(item.gradeText);
 var filteredWords = $(item.words).not($scope.stopList).get();

            Word.run(function (context) {
                var selectedRange = context.document.getSelection();
                context.load(selectedRange, "text");
                return context.sync().then(function () {
                    for (var i = 0; i < filteredWords.length; i++) {

                        var searchResults = null;

                        searchResults = selectedRange.search(filteredWords[i], { ignorePunct: true, matchCase: false, matchWholeWord: true });

                        context.load(searchResults, 'font');

                        context.sync().then(function () {
                            for (var i = 0; i < searchResults.items.length; i++) {
                                searchResults.items[i].font.color = color;
                                searchResults.items[i].font.bold = true;
                            }

                        });
                    }
                }).then(context.sync);

            })
               .catch(function (error) {
                   console.log('Error: ' + JSON.stringify(error));
                   if (error instanceof OfficeExtension.Error) {
                       console.log('Debug info: ' + JSON.stringify(error.debugInfo));
                   }
               });

【问题讨论】:

    标签: ms-office office-js office-addins word-addins


    【解决方案1】:

    我发现在第二个context.sync 前面添加关键字return 可以解决此问题。

    【讨论】:

    • 它有效,但仅适用于数组的第一项。我在数组中有 11 个项目,但它只突出显示数组索引 0 中的单词。
    • return 关键字在对第一项应用样式后结束循环。这就是我删除 return 关键字的原因。
    • 嗯,这是你在问题中没有提到的另一个问题。您刚刚就错误消息寻求帮助。
    【解决方案2】:

    感谢您的回答,我可以通过此链接了解此功能:

    Best way to write loops with promises (ctx.sync) in JavaScript API for Office

    【讨论】:

    • 我必须投反对票,即使您链接到的 Stack 答案中的建议是非常好的建议。但它没有回答您提出的问题,即“未处理的拒绝 PropertyNotLoaded:属性 'items' 不可用”错误。
    猜你喜欢
    • 2022-06-14
    • 1970-01-01
    • 2010-10-04
    • 2020-10-11
    • 1970-01-01
    • 2010-12-10
    • 2019-06-24
    • 2015-01-10
    • 2014-03-08
    相关资源
    最近更新 更多