加载加载项的任务窗格后,我想获得之前保存的设置(as described here)。
我在这里这样做:
$(document).ready(function() {
$("#mysetting").val(Office.context.Settings.get("mysetting"));
});
但是 - 很明显 - 我得到一个错误,表明:
TypeError: Cannot read property 'get' of undefined
此错误是IMO,因为在Office初始化准备好之前文档已准备就绪,对吗?
但是,如何检查Office是否可以使用?
我做错了什么,或者我误解了什么?
答案 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不会自动保留设置,您需要明确告诉它何时将这些设置写回文档。