handsontable复杂的数据和剪贴板

时间:2015-08-28 23:49:21

标签: clipboard handsontable

是否有可能复制HOT数据的渲染版本?

我的情况和数据:

每一行看起来像:

[ number, number, ..., object {simpleValue : number, extraData : data }, number, number, ... ]

行是简单数字和扩展数据的组合'对象。 '扩展数据对象'由自定义渲染函数呈现为来自&simple;简单值的数字'财产(工作正常)。此外,还为TD注册了一个onClick事件,其中包含调用DisplayExtData函数的扩展对象。

当我选择所有显示的数据(CTRL + A)并将它们复制到剪贴板(CTRL + C)时,会出现第一个问题。而不是仅包含数字的副本,我在文本呈现' simpleValue'的地方获得了[对象]。显示在表格中。因此,用户不会获得他所看到的呈现内容,但可能获得数据的内部表示。

这个问题的最简单的解决方案就是预处理数据并将对象转换为简单值'在他们被推入HoT之前。但我需要(不知何故)链接到原始扩展数据对象,因为我需要在TD点击上显示这些扩展数据。

(我的第一个解决方案是将对象转换为JSON,这些JSON被保存到隐藏的textareas中,其中包含带有onClick事件等的&simple;' simpleValue属性的可见标签标签,但此解决方案无法解决上述主要问题,因为我在剪贴板复制文本中得到了json和textarea标签。)

1 个答案:

答案 0 :(得分:1)

知道了:

1)覆盖我的“扩展数据对象”的toString方法,以返回我想呈现的任何属性:

ExtData.prototype.toString = function(){return this.value;};

2)自定义渲染器渲染value.toString()并保留对象,因此可以将onClick事件添加到TD,如:

td.onclick = function(){ShowExtData(value);};

(其中value是我的ExtData对象)。

来自HoT的复制文本包含与显示完全相同的文本,已解决。