【发布时间】:2017-05-29 00:25:30
【问题描述】:
背景
我正在为 Excel 2013 编写一个侧边栏应用程序,并且我有一个包装函数来更新侧边栏的视图。我需要从多个事件中触发该功能(从而触发视图的更新),其中之一是绑定区域中的数据发生变化时。
我遇到的问题是我需要将一个变量传递给该包装函数。它需要我希望能够保存在设置中然后只加载一次的数据。
代码
当前代码:
Office.select("bindings#"+bindingID).addHandlerAsync(Office.EventType.BindingDataChanged, onBindingDataChanged);
function onBindingDataChanged(eventArgs) {
searchThroughData(eventArgs.binding.id);
}
function searchThroughData(bindingID) {
//repaint view
}
以上工作触发重绘。但它不包括传递的变量。我希望代码是这样的:
尝试过,但不起作用:
Office.select("bindings#"+bindingID).addHandlerAsync(Office.EventType.BindingDataChanged, onBindingDataChanged(eventArgs,data));
function onBindingDataChanged(eventArgs,data) {
searchThroughData(eventArgs.binding.id,data);
}
function searchThroughData(bindingID,data) {
//repaint view
}
但是,这不起作用。
问题
有什么想法可以传递这个变量吗?
【问题讨论】:
-
变量“data”从何而来?
-
这是一个通过
Office.context.document.settings.get('bindingIDs');检索的设置。它用于搜索框,每次击键都会更新,但设置不会每次都改变,所以我想避免一遍又一遍地查询设置。 -
目前我正在创建一个半全局变量,在我的顶级自启动函数内部但在我的
Office.initialize =之外。不过,这似乎很草率。