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 【问题描述】:我有如下代码:
<div id="rangePricesGrid" class="handsontable" style="width: auto; overflow: auto"></div>
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 后销毁和重新创建不起作用的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 jQuery 将数据从 PHP 加载到 Handsontable?
HandsOnTable:如何从 PHP 服务器脚本加载数组?