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

时间:2015-05-05 13:38:11

标签: javascript jquery handsontable

我的代码如下:

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桌子已被破坏,但我试图用更新的选项重新创建它。

请建议

2 个答案:

答案 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();