Надстройка Office — имя функции ленты, похоже, не поддерживает вызов метода из класса

В манифесте ленты я могу объявить функцию, которая будет выполняться при нажатии кнопки на ленте. Например,

      <Action xsi:type="ExecuteFunction">
          <FunctionName>doSomething</FunctionName>
      </Action>

Однако, если у меня есть машинописный файл со следующим определением:

   class MyFunctions {
        public static doSomething(){
           Office.context.ui.displayDialogAsync("https://localhost:44337/index.html",
           { height: 50, width: 50 }
        }
    }

Следующее не будет работать:

<Action xsi:type="ExecuteFunction">
    <FunctionName>MyFunctions.doSomething</FunctionName>
</Action>

Как будто он не распознает имена с точками в файле манифеста, которым в данном случае является ClassName.FunctionName.


person wm_    schedule 11.07.2016    source источник


Ответы (2)


MyFunctions.doSomething не работает, потому что компилятор TypeScript преобразует его в функцию (т.е. typeof MyFunctions == 'функция')

В настоящее время манифест надстройки Office поддерживает только:

  1. Выполнить глобальную функцию
  2. Выполнение функции-члена внутри «объекта».

Следовательно, если MyFunctions является объектом, манифест будет работать. Вот один пример:

var MyFunctions = {
    doSomething: function() {}
};

Надеюсь, эта проблема будет исправлена ​​в следующем релизе. Спасибо.

person Kejing Peng    schedule 11.07.2016
comment
Спасибо за информацию! - person wm_; 12.07.2016

Функции, вызываемые командами надстройки, пока должны быть глобальными. В вашем случае функция не выполняется, потому что она определена как часть класса MyFunctions.

Мы понимаем, что имеет смысл разрешить структуру, которую вы здесь описываете, поэтому мы работаем над исправлением, чтобы разрешить ее в будущем. Благодарю вас!

person Michael Saunders    schedule 11.07.2016
comment
Спасибо за информацию! - person wm_; 12.07.2016