OfficeJS 添加和更新绑定事件处理程序
OfficeJS add and update binding event handler
我正在尝试创建一个绑定,以便我最终可以检查该单元格是否已更改并进行一些 AJAX 调用。 documentation 给出了几个例子,我试图把它们变成最简单的例子:
Office.initialize = function(){
$(document).ready(function() {
Excel.run(function(context){
// This should create a new binding and store it in the bindingsObject
// add(range: Range or string, bindingType: string, id: string)
context.workbook.bindings.add("Sheet1!A1:A2", "Range", "A_binding");
// create a new event handler for this bindings
Office.select("bindings#A_binding").addHandlerAsync(Office.EventType.BindingDataChanged, onBindingDataChanged);
$("#output").append("<br /><br /> Finished Pre-Sync");
return context.sync().then(function(){
$("#output").append("<br /><br />Post Sync")
});
}).catch(function(error){
$("#debugger").append("error: " + JSON.stringify(error.debugInfo));
})
});
}
function onBindingDataChanged(eventArgs){
Excel.run(function(context) {
$("output").append("updated");
})
}
然而,当我更改单元格中的数据时,没有任何反应,没有错误,没有 "updated"。这是创建绑定的错误方法吗?
以下代码为范围 Sheet1!A1:A2
创建一个绑定,然后为该绑定添加一个 onDataChanged
事件处理程序。
function registerDataChangedHandler_JS() {
Excel.run(function (context) {
var myBinding = context.workbook.bindings.add("Sheet1!A1:A2", "range", "A_binding");
myBinding.onDataChanged.add(onBindingDataChanged_JS);
return context.sync()
.then(function () {
console.log("Created binding and added onDataChanged event for the binding.");
});
}).catch(errorHandlerFunction);
}
function onBindingDataChanged_JS(eventArgs) {
Excel.run(function (context) {
console.log("Cells were updated!");
return context.sync();
});
}
注意:您可以使用 Script Lab (https://aka.ms/getscriptlab). Simply install the Script Lab add-in (free), then choose "Import" in the navigation menu, and use the following Gist URL: https://gist.github.com/kbrandl/a39042da654da0f2b1e1358631d9ca6a) 自己快速轻松地尝试此代码段。此 Gist 包含JavaScript(方法名称以 _JS
结尾)和 TypeScript(方法名称以 _TS
结尾)中的代码示例。
加载加载项时创建绑定并添加事件处理程序:
Office.initialize = function (reason) {
$(document).ready(function () {
registerDataChangedHandler_JS();
});
};
(您可以在此处了解有关初始化事件的更多信息:https://docs.microsoft.com/en-us/office/dev/add-ins/develop/understanding-the-javascript-api-for-office#initializing-your-add-in。)
最后,您 post link 中的文档 link 到 GitHub 上的文档源文件。为了获得更好的用户体验,我建议您使用文档站点本身:https://docs.microsoft.com/en-us/office/dev/add-ins。要从此文档站点获取 API 参考文档,请使用 参考 部分中的 link:
(这里直接link到Binding API参考文章:https://dev.office.com/reference/add-ins/shared/binding。)
我正在尝试创建一个绑定,以便我最终可以检查该单元格是否已更改并进行一些 AJAX 调用。 documentation 给出了几个例子,我试图把它们变成最简单的例子:
Office.initialize = function(){
$(document).ready(function() {
Excel.run(function(context){
// This should create a new binding and store it in the bindingsObject
// add(range: Range or string, bindingType: string, id: string)
context.workbook.bindings.add("Sheet1!A1:A2", "Range", "A_binding");
// create a new event handler for this bindings
Office.select("bindings#A_binding").addHandlerAsync(Office.EventType.BindingDataChanged, onBindingDataChanged);
$("#output").append("<br /><br /> Finished Pre-Sync");
return context.sync().then(function(){
$("#output").append("<br /><br />Post Sync")
});
}).catch(function(error){
$("#debugger").append("error: " + JSON.stringify(error.debugInfo));
})
});
}
function onBindingDataChanged(eventArgs){
Excel.run(function(context) {
$("output").append("updated");
})
}
然而,当我更改单元格中的数据时,没有任何反应,没有错误,没有 "updated"。这是创建绑定的错误方法吗?
以下代码为范围 Sheet1!A1:A2
创建一个绑定,然后为该绑定添加一个 onDataChanged
事件处理程序。
function registerDataChangedHandler_JS() {
Excel.run(function (context) {
var myBinding = context.workbook.bindings.add("Sheet1!A1:A2", "range", "A_binding");
myBinding.onDataChanged.add(onBindingDataChanged_JS);
return context.sync()
.then(function () {
console.log("Created binding and added onDataChanged event for the binding.");
});
}).catch(errorHandlerFunction);
}
function onBindingDataChanged_JS(eventArgs) {
Excel.run(function (context) {
console.log("Cells were updated!");
return context.sync();
});
}
注意:您可以使用 Script Lab (https://aka.ms/getscriptlab). Simply install the Script Lab add-in (free), then choose "Import" in the navigation menu, and use the following Gist URL: https://gist.github.com/kbrandl/a39042da654da0f2b1e1358631d9ca6a) 自己快速轻松地尝试此代码段。此 Gist 包含JavaScript(方法名称以 _JS
结尾)和 TypeScript(方法名称以 _TS
结尾)中的代码示例。
加载加载项时创建绑定并添加事件处理程序:
Office.initialize = function (reason) {
$(document).ready(function () {
registerDataChangedHandler_JS();
});
};
(您可以在此处了解有关初始化事件的更多信息:https://docs.microsoft.com/en-us/office/dev/add-ins/develop/understanding-the-javascript-api-for-office#initializing-your-add-in。)
最后,您 post link 中的文档 link 到 GitHub 上的文档源文件。为了获得更好的用户体验,我建议您使用文档站点本身:https://docs.microsoft.com/en-us/office/dev/add-ins。要从此文档站点获取 API 参考文档,请使用 参考 部分中的 link:
(这里直接link到Binding API参考文章:https://dev.office.com/reference/add-ins/shared/binding。)