javascript - Handsontable:更改下拉菜单宽度

标签 javascript typescript handsontable

我花了一些时间寻找此问题的可能解决方案,并且 this one看来是最合适的。

我的自定义视觉对象(PowerBI、Typescript)中的代码结构如下:

export class Visual implements IVisual {
  private settings: VisualSettings;
  private host: IVisualHost;
  <...>
  private hot: Handsontable;

  constructor(options: VisualConstructorOptions) {
    <...>
    };
    this.hot = new Handsontable(hotElement, hotSettings);

    this.hot.addHook('modifyColWidth', function(width){
      if(this === this.hot.getPlugin('dropdownmenu').menu.hotMenu)
      {
        return 300;
      }
      return width;
    })
  }

最后一段代码输出错误:

Uncaught TypeError: Cannot read property 'getPlugin' of undefined
    at Core.<anonymous> (<anonymous>:65781:29)
    at Hooks.run (<anonymous>:10485:46)
    at Core.runHooks (<anonymous>:43381:89)
    at Core.getColWidth (<anonymous>:42643:22)
    at Table.getColumnWidth (<anonymous>:49386:17)
    at Table.getStretchedColumnWidth (<anonymous>:49396:30)
    at LeftOverlay.sumCellSizes (<anonymous>:83603:33)
    at Overlays.adjustElementsSize (<anonymous>:53065:69)
    at Object.adjustRowsAndCols (<anonymous>:40249:37)
    at Core.updateSettings (<anonymous>:41558:10)0

看来钩子(Hook)看不到我的视觉实例,这就是为什么 IntelliSense 没有为插件提供任何内容:this.hot.getPlugin('dropdownmenu').menu.hotMenu

有人遇到同样的问题吗?你能帮忙吗?

最佳答案

您需要添加全局钩子(Hook)而不是本地钩子(Hook),并检查将应用钩子(Hook)的绑定(bind)实例是否是您定义的“hot”下拉菜单的一部分。

const self = this;
Handsontable.hooks.add('modifyColWidth', function (width) {
  if (this === (self.hot.getPlugin('dropdownMenu').menu as Menu).hotMenu) {
    return 300;
  }
  return width;
});

关于javascript - Handsontable:更改下拉菜单宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57745244/

相关文章:

javascript - 如何减慢 Google 脚本速度

javascript - 即使在casperjs中assertExist为true也找不到元素

router.navigate 后未调用 Angular 4 ngOnInit

Angular 2 - typescript : TS2322: Type 'Subscription' is not assignable to type 'Observable<MouseEvent>'

typescript - 是否可以检查对象的键是否是泛型的键?

javascript - Handsontable:事件触发器上的setDataAtCell

javascript - 运行 PHP 脚本时显示加载图像

javascript - 未捕获的类型错误 : Object [object Object] has no method 'handsontable' ?

javascript - 如何同步多个可手动水平滚动

javascript - 路由到不同 Angular 页面时如何使用不同背景