Как выделить конкретные слова в выбранном диапазоне? - PullRequest
0 голосов
/ 06 апреля 2019

В основном я должен выделить слова, которые я получаю в массиве. На консоли я получаю следующую ошибку после первой итерации:

Необработанный отказ. PropertyNotLoaded: свойство 'items' недоступно. Перед чтением значения свойства вызовите метод 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));
                   }
               });

Ответы [ 2 ]

0 голосов
/ 06 апреля 2019

Спасибо за ваш ответ, я смог получить представление об этой функции по этой ссылке:

Лучший способ написать циклы с обещаниями (ctx.sync) в JavaScript API для Office

0 голосов
/ 06 апреля 2019

Я считаю, что добавление ключевого слова return перед вторым context.sync исправляет его.

...