如何在加载加载项后获取加载项的(已保存)设置?

时间:2018-05-01 16:52:35

标签: javascript office-js

加载加载项的任务窗格后,我想获得之前保存的设置(as described here)。

我在这里这样做:

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

但是 - 很明显 - 我得到一个错误,表明:

TypeError: Cannot read property 'get' of undefined

此错误是IMO,因为在Office初始化准备好之前文档已准备就绪,对吗?

但是,如何检查Office是否可以使用?

我做错了什么,或者我误解了什么?

1 个答案:

答案 0 :(得分:1)

你不应该从$(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不会自动保留设置,您需要明确告诉它何时将这些设置写回文档。