【问题标题】:Handsontable: how to get instance by container?Handsontable:如何通过容器获取实例?
【发布时间】:2017-11-13 21:18:30
【问题描述】:

我需要创建一个函数来执行一些数据更新并重新渲染到渲染的 handontalbe 实例 (var ht = new Handsontable(el,options))。在我的情况下,我可以很容易地得到el(用作实例容器的元素)。难道只知道el就可以得到ht吗?或者我必须在某个地方“记住”ht 以后才能访问它?

(我试过Handsontable(el),它会创建一个新表,它不会返回已经创建的实例)

【问题讨论】:

    标签: javascript handsontable


    【解决方案1】:

    如果你使用 jQuery,你应该可以这样做:

    // Instead of creating a new Handsontable instance
    // with the container element passed as an argument,
    // you can simply call .handsontable method on a jQuery DOM object.
    var $container = $("#example1");
    
    $container.handsontable({
        data: getData(),
        rowHeaders: true,
        colHeaders: true,
        contextMenu: true
    });
    
    // This way, you can access Handsontable api methods by passing their names as an argument, e.g.:
    var hotInstance = $("#example1").handsontable('getInstance');
    

    这里是文档链接:https://docs.handsontable.com/pro/1.13.0/demo-jquery.html

    【讨论】:

      【解决方案2】:

      您无法从构造它的 DOM 元素中获取可动手操作的对象。 Handsontable 实例只是一个包装器,它控制 DOM 元素的查看,并且该元素没有对其包装器的引用。

      这意味着您确实需要将您对ht 的引用存储在某处,就像您存储另一个变量一样。

      如果您的问题是范围,请将表格设置为窗口对象的属性,并且可以从页面中的任何位置访问它。这可以简单地使用:

      window.ht = new Handsontable(el,options)
      

      但是,如果可能,请避免创建此类全局变量并将其保持在适当的范围内。

      【讨论】:

      • 所以没有像Handsontable.getInstances(element) 这样的方法来实现这一点,对吧?
      猜你喜欢
      • 2019-05-18
      • 1970-01-01
      • 2016-07-22
      • 2019-12-14
      • 1970-01-01
      • 2018-03-13
      • 2021-06-23
      • 2021-10-03
      • 1970-01-01
      相关资源
      最近更新 更多