ExecuteFunction не вызывает функцию - PullRequest
0 голосов
/ 26 апреля 2019

Я создал проект Microsoft Office Add-in React (TypeScript), используя yo office.

Я изменил свой manifest.xml, чтобы включить

<Control xsi:type="Button" id="Contoso.GrabSelectionButton">
  <Label resid="Contoso.GrabSelectionButton.Label" />
  <Supertip>
    <Title resid="Contoso.GrabSelectionButton.Label" />
    <Description resid="Contoso.GrabSelectionButton.Tooltip" />
  </Supertip>
  <Icon>
    <bt:Image size="16" resid="Contoso.tpicon_16x16" />
    <bt:Image size="32" resid="Contoso.tpicon_32x32" />
    <bt:Image size="80" resid="Contoso.tpicon_80x80" />
  </Icon>

  <Action xsi:type="ExecuteFunction">
    <FunctionName>grabSelection</FunctionName>
  </Action>
</Control>

<FunctionFile resid="Contoso.DesktopFunctionFile.Url" /> установлен правильно - я не изменил его из шаблона по умолчанию.

Я добавил метод в function-file.ts вот так

(() => {
  Office.initialize = () => { console.log("this gets logged..."); };

  function grabSelection(event){
    console.log("grabSelection invoked! - this does not get logged");

    event.completed();
  }

})();

и я тоже так пытался

   (() => {
      Office.initialize = () => { console.log("this gets logged..."); };
    })();

export function grabSelection(event){
  console.log("grabSelection invoked! - this does not get logged");
  event.completed();
}

Я вижу, что он скомпилирован и включен во время выполнения, но функция не вызывается ...

почему функция не вызывается? Проблема в webpack, неправильно экспортирующем функцию?

1 Ответ

0 голосов
/ 01 мая 2019

Мне удалось это исправить, подключив мою функцию к глобальному пространству имен следующим образом:

(() => {
  Office.initialize = () => {
    console.log("function file loaded...!");
   };
  })();

function grabSelection(event: any): void {
    console.log("i got invoked!!!");
    event.completed();
}

const _global = (window /* browser */ || global /* node */) as any;
_global.grabSelection= grabSelection;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...