Допустим, я ищу слово и отслеживаю возвращенную коллекцию 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 в нескольких функциях.