Как получить (сохраненные) настройки надстройки после загрузки надстройки? - PullRequest
0 голосов
/ 01 мая 2018

После загрузки панели задач моей надстройки я хочу получить сохраненную ранее настройку (, как описано здесь ).

Я делаю это здесь:

$(document).ready(function() {
  $("#mysetting").val(Office.context.Settings.get("mysetting"));
});

Но - очевидно - я получаю сообщение об ошибке:

TypeError: Cannot read property 'get' of undefined

Это ошибка IMO из-за того, что документ готов до инициализации Office, верно?

Но как мне проверить, готов ли Office для использования?

Что я делаю не так или я что-то неправильно понял?

1 Ответ

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

Вы не должны звонить по этому номеру $(document).ready. Это только говорит о том, что DOM загружен, но не говорит о том, что ваша надстройка подключена к приложению Office.

Вместо этого вам нужно сделать это из метода Office.initialize. Этот метод запускается после того, как Office готов для вашей надстройки. В этот метод можно добавить дополнительную проверку для $(document).ready, чтобы убедиться, что DOM также загружен:

Office.initialize = function() {
  $(document).ready(function() {
    // Your code here
  });
};

Вы также должны убедиться, что ваша коллекция настроек заполнена, прежде чем пытаться получить доступ к элементам в коллекции. Это делается путем вызова refreshAsync перед чтением из коллекции настроек:

Office.initialize = function() {
  $(document).ready(function() {
    // Populate the settings collection
    Office.context.document.settings.refreshAsync(function(asyncResult) {
      // Read your setting
      let mySetting = Office.context.settings.get("mysetting");

      // Since this setting may not exist, check it before assigning
      if (mySetting) $("#myDomElement").val(mySetting);
    });
  });
};

Кроме того, убедитесь, что вы звоните saveAsyn после установки значения. Office не будет автоматически сохранять настройки, вам нужно явно указать, когда записывать эти настройки обратно в документ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...