2017-07-21 41 views
1

我試圖使用Excel.SettingExcel.SettingCollection對象在Excel中1.4的要求設定SettingsChanged事件處理程序。 (不是來自共享Office.js API的舊設置對象。)我無法獲取要註冊的Excel.SettingCollection.onSettingsChanged事件的處理程序。以下是我的代碼(TypeScript)。我運行了createSetting方法,並且驗證了我的設置正在被添加。然後我運行changeSetting方法。沒有錯誤,但我的處理程序從不運行。任何人都可以看到有什麼不對?添加第二個設置並刪除設置也不會觸發處理程序。 (其他Excel 1.4 API的正常工作。)如何註冊在Office web插件

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

我瞭解到,這是一個已知的bug。當使用新的1.4 API更改設置時,不會觸發onSettingsChanged事件。修復時我會在這裏更新。

+0

相關的GitHub問題:https://github.com/OfficeDev/office-js/issues/69。 –