我的代码如下:
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桌子已被破坏,但我试图用更新的选项重新创建它。
请建议
答案 0 :(得分:2)
我认为您了解您正在销毁该实例,但您并不了解如何重新创建该实例。要开始它会很有用,看看setRangeGridOptions
,也可能是一个jsfiddle。如果您使用jQuerySelector.handsontable(options)方法实例化动手,则可能是您遇到问题的原因。
您是否考虑过手动删除之前HOT实例的引用,以免出现此问题?尝试以这种方式实例化HOT:
var hot = new Handsontable($('#rangePricesGrid')[0], setRangeGridOptions)
这样,您应该能够销毁hot
实例,并且您的代码应该开始工作。要破坏热实例,你只需要做:
hot.destroy()
要重新创建它,请重复使用上面的行。
答案 1 :(得分:0)
你可以这样做。
// incorrect var rangePriceGrid = $('#rangePricesGrid').handsontable('getInstance'); rangePriceGrid.destroy(); // correct $('#rangePricesGrid').destroy();