Word加载项中的绑定用法

珍妮77

我想使用Office加载项技术为Word文档提供“模型-视图-控制器”逻辑。

在我的情况下,用户应该能够创建新的Word文档,激活加载项并按加载项内的按钮以将文本框字段添加到文档中。该字段应显示一个来自数据库的数字:当用户更新该数字并按保存时,该数字应写回到数据库中。下次打开Word文档时,应刷新编号,以显示更新的值。

我想知道的是,该附加技术是否可以使用(可能具有绑定支持?)还是仍处于试验阶段。我在尝试理解构建仅表示我的文本框的紧凑型OOXML的最佳方法时遇到了麻烦:getSelectedDataAsync方法输出一个非常复杂的文档,这不是描述单光基础差的聪明方法。裸文本框字段!以及如何将绑定设置为自定义XML?该XML应该放在哪里?在文件里面?我查看了Microsoft在GitHub上提供的示例,但它们并不清楚,因为在许多情况下,它们基于现有的Word文档,而这些文档已经具有必要的数据和字段。

迈克尔·桑德斯

绝对!您描述的场景实际上是该平台最初设计的外接程序的关键类型之一。关键元素是一个JavaScript对象,我们称其为“绑定”,用于跟踪文档中的内容控件,并且不需要OXML或自定义XML。

该API能够直接添加内容控件(类似于文本框):调用Bindings.addFromSelectionAsync方法。

function addNewField(fieldName){
    Office.context.document.bindings.addFromSelectionAsync("text",
    { id: fieldName },
    function (asyncResult){
        displayNumberFromDatabase(asyncResult.value);
    }
}

同时注册两个事件处理程序,以便在用户选择或修改这些内容控件中的文本时收到通知。在这种情况下,相关事件分别BindingSelectionChangedBindingDataChanged

Office.context.document.addHandlerAsync("bindingDataChanged", whenBindingDataChanged);
Office.context.document.addHandlerAsync("bindingSelectionChanged", whenBindingSelected);

触发这些事件后,您将需要阅读内容。您可以使用Binding.getDataAsync方法来实现。

function whenBindingDataChanged(eventArgs){
    eventArgs.binding.getDataAsync(function(asyncResult){
        setValueToDatabaseAsync(eventArgs.binding.id,asyncResult.value);
        // you need to implement setValueToDatabaseAsync
    });
}

最后,要自行修改Binding的内容以写入初始值,请使用Binding.setDataAsync方法。

function displayNumberFromDatabase(myBinding){
    getValueFromDatabaseAsync(myBinding.id, function(value){
        myBinding.setDataAsync(value);
    });
    // you need to implement getValueFromDatabaseAsync
}

-Michael Saunders,Office加载项经理

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

新的Microsoft Word Office加载项在功能区中未显示加载项按钮

将Word Online检测为Office加载项中的主机

C#中的MS Word加载项TextChange事件

Word Online中突然不支持该加载项

通过Javascript加载项控制Word文档中的选择范围

在Word在线加载项中插入可编辑内容控件

Word加载项:“代表”流中的无效签名

Word 加载项未出现在 Office 商店中

在 C# 或 VBA VSTO 加载项中运行 Word 宏

无法在Windows上将加载项侧面加载到MS Word中

您如何在Mac Word 2016中显示Word加载项?

使用 Word 2013 的 office.js 加载项中未定义“Word”

GAS:从绑定脚本中调用在加载项中定义的函数?

在尚不知道图像类型的加载项中从Word文档中插入图像

office.js中开发的Microsoft Word加载项可以支持Mobile Word应用程序吗?(我知道Outlook加载项支持移动设备)

R中绑定tf_df的用法

Word加载项获取完整的文档文本?

VSTO Office Word加载项开发概述

Word 2016加载项:检测文档保存

C#Word加载项编辑CustomXmlParts

如何在Word和Excel的在线版本中测试Office加载项?

如何使用要求集 1.1 在 Word 加载项中读取键入的文本

Word 2016 Web加载项中的任务窗格无法正确显示

VSTO Word 加载项:如何在数组单元格中添加内容控件

如何使用 Office.JS 在 MS Word 加载项中设置作者姓名、添加时间?

Office Word加载项中的JavaScript可以访问Outlook联系人吗?

如何在NetOffice Word加载项中收听新文档事件

在 Word 2016 (Office 365) VSTO 加载项中处理自动保存

Office.js无法在Angular的Word加载项中初始化