Как обновить один и тот же элемент управления контентом в другом контексте

Я использую слово javascript Api для разработки надстройки слова, мне нужно вставить элемент управления контентом при нажатии кнопки и отправить запрос ajax. В ответ Ajax мне нужно обновить тот же элемент управления контентом.

Я пытаюсь использовать следующие подходы:

1). При вставке тега cc в тег набора документов как "временный" и после получения ответа ajax, поиск CC с использованием "contentControls.getByTag", но с несколькими элементами управления контентом не может обновить правильный cc, так как ответ ajax может занять некоторое время, поэтому множественный cc будет иметь "временный" тег.

2). После вставки копии в документ, я попытался загрузить копию идентификатора, используя:

var range2 = context.document.getSelection().parentContentControlOrNullObject;
context.load(range2);

Но это возвращает неопределенное.

Пожалуйста, покажите мне, как я могу выполнить вышеуказанное требование. Какой правильный способ сделать это, или я могу использовать тот же объект диапазона в другой запуск слова и обновить копию для этого диапазона.

1 ответ

Это должно быть действительно просто сделать. При вставке элемента управления контентом с помощью API возвращается элемент управления контентом. Это фактически дескриптор для этого управления контентом. После загрузки вы можете позже выполнять любые операции с ним, включая добавление, изменение содержимого. Посмотрите этот пример о том, как это сделать:

function InsertCCandUpdate() {
     Word.run(function(context) {
        //  we first insert a content control, on this case on the selection!
        //notice we'll hold a reference to the CC in the myCC var:

        var myCC = context.document.getSelection().insertContentControl();
        context.load(myCC);
        
        return context.sync()
        .then(function(){
            // myCC holds a handle to the  contentt control.... then we can update its content
            myCC.insertText(getSomeContent(),"replace");



        })
    });
}

function getSomeContent(){
//this method is just to simulate your  AJAX call.
return("some text from your AJAX call");

}

Я думаю, что это поможет вам в вашем сценарии. Спасибо!

Другие вопросы по тегам