可操作的复杂数据和剪贴板
Posted
技术标签:
【中文标题】可操作的复杂数据和剪贴板【英文标题】:handsontable Complex data and clipboard 【发布时间】:2015-11-23 17:16:37 【问题描述】:是否有可能复制 HOT 数据的渲染版本?
我的情况和数据:
每一行看起来像:
[ number, number, ..., object simpleValue : number, extraData : data , number, number, ... ]
行是简单数字和“扩展数据”对象的组合。 “扩展数据对象”由自定义渲染函数渲染为“simpleValue”属性中的数字(工作正常)。还为包含调用 DisplayExtData 函数的扩展对象的 TD 注册了一个 onClick 事件。
当我选择所有显示的数据 (CTRL+A) 并将它们复制到剪贴板 (CTRL+C) 时,出现了第一个问题。而不是只包含数字的副本,我在表格中显示“simpleValue”的文本呈现的地方得到了[对象对象]。所以用户不会得到他所看到的渲染,但可能会得到数据的内部表示。
这个问题最简单的解决方案就是预处理数据并将对象转换为“simpleValues”,然后再将它们推入HoT。但我需要(以某种方式)指向原始扩展数据对象的链接,因为我需要在 TD click 上显示这些扩展数据。
(我的第一个解决方案是将对象转换为 JSON,将其保存到隐藏的文本区域中,其中包含带有 onClick 事件等的“simpleValue”属性的可见标签标签,但是这个解决方案在上述主要问题上失败了,因为我得到了 json 和剪贴板中的 textarea 标签复制了文本。)
【问题讨论】:
【参考方案1】:知道了:
1) 覆盖我的“扩展数据对象”的 toString 方法以返回我想要呈现的任何属性:
ExtData.prototype.toString = function()return this.value;;
2) 自定义渲染器渲染 value.toString() 并保留对象,因此可以将 onClick 事件添加到 TD,如下所示:
td.onclick = function()ShowExtData(value);;
(其中 value 是我的 ExtData 对象)。
从 HoT 复制的文本包含与显示的完全相同的文本,已解决。
【讨论】:
你有 ShowExtData() 的例子吗?以上是关于可操作的复杂数据和剪贴板的主要内容,如果未能解决你的问题,请参考以下文章