我有如下代码:
<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()
要重新创建它,您可以重用上面的行.