如何在Office Web加载项中为SettingsChanged事件注册处理程序

时间:2017-07-21 22:13:49

标签: office-js office-addins

我正在尝试在Excel 1.4需求集中使用 Excel.Setting Excel.SettingCollection 对象。 (不是来自共享Office.js API的旧设置对象。)我无法获取要注册的 Excel.SettingCollection.onSettingsChanged 事件的处理程序。下面是我的代码(TypeScript)。我运行createSetting方法,我已经确认我的设置已被添加。然后我运行changeSetting方法。没有错误,但我的处理程序永远不会运行。任何人都可以看到什么是错的?添加第二个设置并删除设置也不会触发处理程序。 (其他Excel 1.4 API工作正常。)

async function createSetting() {
    try {
        await Excel.run(async (context) => {
            const settings = context.workbook.settings;
            settings.add("NeedsReview", true);
            settings.onSettingsChanged.add(onChangedSetting);
            await context.sync();
        });
    }
    catch (error){
        console.log(error.message);
    }
}

处理程序:

async function onChangedSetting() {
    try {
        await Excel.run(async (context) => {
            console.log("handler ran");  // DOES NOT RUN
            await context.sync();
        });
    }
    catch (error) {
        console.log(error.message);
    }
} 

更改设置方法:

async function changeSetting() {
    try {
        await Excel.run(async (context) => {
            const settings = context.workbook.settings;

            // The settings.add function is also how you change a 
            // setting. There is no Excel.SettingCollection.setItem
            // or Excel.Setting.set method.
            settings.add("NeedsReview", false); // Change value
            await context.sync();
        });
    }
    catch (error) {
        console.log(error.message);
    }
}

1 个答案:

答案 0 :(得分:1)

我了解到这是一个已知的错误。使用新的1.4 API更改设置时,不会触发onSettingsChanged事件。修复时我会在这里更新。