【发布时间】:2016-01-02 09:01:04
【问题描述】:
根据其容器的大小和每行的大小,它具有动态的行数。
如果您查看链接列,每一行都可以有多个这样的链接。
如果您注意到,底部的分页会被扔掉。那是因为目前当我对表格进行重排或调整大小时,我得到的信息是每一行都有一个链接。情况发生了变化,现在每一行都有多个链接。以下是之前的回流工作方式:
var el = $element.closest('.gridster-item');
var height = el.height();
vm.dsHeight = 36;
vm.pageHeight = 52;
var calcHeight = vm.dsHeight + vm.pageHeight;
var rowHeight = height - calcHeight - 40;
var rows = Math.floor(rowHeight / 27) - 1;
vm.numPerPage = rows < 0 ? 5 : rows;
在您看到 var rows = Math.floor(rowHeight/27) - 1 的地方,27 是之前假定的恒定行高。
现在具有多个链接的行的高度为 27 像素,或者高度为 27 + 16(n-1),对于 n >= 1 个链接,对于 n = 0 个链接,高度为 27 + 16n。
我正在尝试找到使用该函数的最佳方法,以根据像素高度获取适当的行值。我的第一个想法是取所有高度的平均值,但是我在使用 Angular 访问那块 DOM 时遇到了问题。这是 HTML 查找它的方式。
<tbody>
<tr align="left" ng-repeat="row in tableRows track by $index">
<td nowrap ng-repeat="col in row.data track by $index"><span ng-bind-html="col"></span></td>
</tr>
</tbody>
由于某种原因,当我执行 $element.find('tbody') 时,我可以访问外部 tbody 元素,但是当我尝试访问它的子元素或访问高度时,我得到 null 或未定义。我不知道如何访问高度,也想不出其他好方法来根据不同的行像素高度更改行数。
【问题讨论】:
-
这段代码在哪里运行?它在 Angular 指令中吗?
-
它在控制器中。
-
如果没有所有代码,我们将无能为力。您可以创建一个 JSFiddle 或类似。
-
问题可能是代码在表格完全渲染之前执行,您需要渲染的表格才能计算 DOM 元素的高度。如果你能找到一种在渲染之前从数据中计算出来的方法,那会更有意义。
-
我可以在渲染之前找到一种方法。这有很大帮助。谢谢!
标签: javascript html angularjs dom html-table