问题描述
在 Tabulator 中,有 layout: 'fitData'
选项,用于使列宽适合数据。
然而,正如这里所见,它没有考虑由于虚拟 DOM 而当前未呈现的单元格:https://jsfiddle.net/tsqL3ju7/
这是由于 Column.fitToData
方法只考虑渲染的单元格:
Column.prototype.fitToData = function () {
// ... ellipsis ...
if (!self.width || !this.widthFixed) {
self.cells.forEach(function (cell) { // iterates on rendered cells
var width = cell.getWidth();
if (width > maxWidth) {
maxWidth = width;
}
});
// ... ellipsis ...
}
这当然是一个明智的实现,因为计算未渲染单元格的宽度需要临时渲染它们,这违背了虚拟 DOM 的目的。
但是,我仍然需要列足够大以包含任意长的文本而不会被截断。
表格在滚动时改变其列的大小是可以接受的。我设计的解决方案是挂钩 RowManager.scrollVertical()
并在更改呈现的行后添加回调。
但是这需要修补 Tabulator,所以这绝对不是一个理想的解决方案。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)