HandsOnTable - 从 0.11.0 升级到 0.15.0-beta 2 后销毁和重新创建不起作用

Posted

技术标签:

【中文标题】HandsOnTable - 从 0.11.0 升级到 0.15.0-beta 2 后销毁和重新创建不起作用【英文标题】:HandsOnTable - destroy and re-create not working after upgrading from 0.11.0 to 0.15.0-beta 2 【发布时间】:2015-07-15 06:49:35 【问题描述】:

我有如下代码:

html

<div id="rangePricesGrid" class="handsontable" style="width: auto; overflow: auto"></div>

javascript

              var rangePriceGrid = $('#rangePricesGrid').handsontable('getInstance');
                if (rangePriceGrid != undefined) 
                    rangePriceGrid.destroy();
                    if (setRangeGridOptions != undefined)
                        rangePriceGrid = $('#rangePricesGrid').handsontable(setRangeGridOptions);


                 else 
                    if (setRangeGridOptions != undefined)
                        rangePriceGrid = $('#rangePricesGrid').handsontable(setRangeGridOptions);
                

在页面加载时,它可以正常工作并绘制 HOT。但是当我更新 HOT 的一个属性(比如数据和列数)然后调用上面的方法时,它在下面失败了

rangePriceGrid = $('#rangePricesGrid').handsontable(setRangeGridOptions);

有错误

Uncaught Error: This method cannot be called because this Handsontable instance has been destroyed

我在这里做错了什么?我知道 HOT 表已损坏,但我正在尝试使用更新的选项重新创建它。

请推荐

【问题讨论】:

使用 !== 而不是 ==。 !== 检查类型和值,当两个变量的类型不同时,!= 会尝试以难以记住的方式强制执行。 【参考方案1】:

我认为您了解您正在销毁该实例,但您不了解如何重新创建该实例。首先,查看setRangeGridOptions 以及可能还有一个 jsfiddle 会很有用。如果您使用 jQuerySelector.handsontable(options) 方法实例化handsontable,这可能是您的问题的原因。

您是否考虑过手动删除对前一个 HOT 实例的引用,以免出现此问题?尝试以这种方式实例化 HOT:

var hot = new Handsontable($('#rangePricesGrid')[0], setRangeGridOptions)

这样,您应该能够销毁hot 实例并且您的代码应该开始工作。要销毁热实例,您只需执行以下操作:

hot.destroy()

要重新创建它,您可以重复使用上面的行。

【讨论】:

【参考方案2】:

你可以这样做。

// 不正确 var rangePriceGrid = $('#rangePricesGrid').handsontable('getInstance'); rangePriceGrid.destroy(); // 正确的 $('#rangePricesGrid').destroy();

【讨论】:

以上是关于HandsOnTable - 从 0.11.0 升级到 0.15.0-beta 2 后销毁和重新创建不起作用的主要内容,如果未能解决你的问题,请参考以下文章

从外部提交 Handsontable 中的更改

如何使用 jQuery 将数据从 PHP 加载到 Handsontable?

HandsOnTable:如何从 PHP 服务器脚本加载数组?

如何从handsontable返回JSON格式的数据?

从启用 AJAX 的 WCF 服务加载 Handsontable

如何将更新的列名从 HandsOnTable 传递到 Shiny 中的绘图?