Как мне использовать Word.RangeCollection в разных контекстах? - PullRequest
2 голосов
/ 08 февраля 2020

Допустим, я ищу слово и отслеживаю возвращенную коллекцию Word.RangeCollection. Как использовать эти диапазоны в другом контексте Word.run? Я искал вокруг и пробовал много разных вещей, чтобы заставить это работать, самый близкий, который я получил, был со следующим

var searchResults;

function search(term){//this works as expected
    Word.run(function (context) {
        searchResults = context.document.body.search(term, { ignorePunct: true });
        searchResults.track();

        context.load(searchResults, ["font"]);

        return context.sync()
        .then(function () {
            for (var i = 0; i < searchResults.items.length; i++) {
                searchResults.items[i].font.highlightColor = "#FFFF00";
            }
        })
        .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));
        }
    });
}

function clearSearch(){
    Word.run(searchResults, (context) => {//pass in Word.RangeCollection so its .context can be reused
        searchResults.load("font");
        return context.sync()
        .then(function(){
            for (var i = 0; i < searchResults.items.length; i++) {//!!!Cant access items here
                searchResults.items[i].font.highlightColor = null;
            }
            //searchResults.untrack();
        })
        .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));
        }
    });
}

, выполняющийся поиск ("anywordinmydo c") работает нормально, но запускает clearSearch () после подсказок мне нужно загрузить объекты недвижимости. Как я понимаю, вызов .load ("font") для RangeCollection должен загрузить свойство шрифта всех объектов Range в items [], поэтому searchResults.items должен быть загружен и доступен.

Мне кажется, я не могу загрузить searchResults.items, не уверен, что я делаю неправильно, но мне нужно иметь возможность отслеживать и использовать Word.RangeCollection в нескольких функциях.

...