在单击鼠标右键之前,HandsOnTable 不会呈现所有列

HandsOnTable not rendering all columns until right mouse click

这看起来完全是疯了,我什至无法 post 一个合适的 JSFiddle,因为我无法复制它,但是...

我有一个包含在 div 中的 handsontable 元素,应该用于强制滚动条。 table 只有 3 列,但只有第一列呈现(我可以通过开发人员控制台检查发现其他两列不存在),直到我右键单击 HandsOnTable 元素。

table是基于这个:https://jsfiddle.net/horacebury/2vc606wx/30/

我使用的 CSS 是这样的:

#handscontainer {
    width: 320px;
    height: 400px;
    padding: 0px;
    margin: 0px;
    border: 0px;
    overflow: hidden;
}

#trendgrid {
    width: 300px;
}

我用的HTML是这样的:

                    <div id="tablecontainer">
                      <table class="tgh">
                        <tr>
                          <td>Tag Name</td>
                        </tr>
                      </table>
                      <div id="handscontainer">
                        <div id="trendgrid" class="maximise"></div>
                      </div>
                      <table class="tg">
                        <tr>
                          <td class="footbuffer"></td>
                          <td class="tg-yw4l" ng-repeat="item in items track by $index">{{item}}</td>
                        </tr>
                      </table>
                    </div>

如果我没有 overflow: xxx 则问题不存在并且 table 非常非常长(因为我需要加载 ~288 行。)

原来显示 HandsOnTable 元素的 angular 选项卡不可见。我必须创建该选项卡 active/visible,然后使用 $interval 在加载数据之前让 HoT 有片刻的控制权。

        $interval(function() {
                loadTableData();
            },
            100,
            1);

我通过删除 outsideClickDeselects: false 解决了这个问题。

HandsonTable 不知道模式的宽度,这就是为什么它只渲染默认列(第一个 td)。 只需要在显示模态后延迟创建 HandsonTable

window.setTimeout(function () {
  loadTableData();
},1000);