javascript – HandsOnTable – 从0.11.0升级到0.15.0-beta 2后,销毁并重新创建不工作

我有如下代码:

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表已经破坏了,但我试图用更新的选项重新创建它.

请建议

最佳答案 我想您明白您正在销毁实例,但您不了解如何重新创建实例.要开始它会很有用,看看setRangeGridOptions,也可能是一个jsfiddle.如果您使用jQuerySelector.handsontable(options)方法实例化handontable,则可能是您遇到问题的原因.

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

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

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

hot.destroy()

要重新创建它,您可以重用上面的行.

点赞