【问题标题】:Getting height of table rows using angular使用角度获取表格行的高度
【发布时间】: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


【解决方案1】:

看起来每个链接都在一个单独的行上。这是正确的吗?如果是这样,你不能只计算
元素或元素的数量并从这个计数中获取行数吗?

【讨论】:

  • 抱歉,br 和 a 元素名称丢失了。
  • 我想我知道该怎么做了。因此,当 Angular 应用程序处理它们时,我将 HTML 字符串存储在控制器中的变量中。所以我能做的是遍历它所在的表行数组,访问每个表行中的数据数组并访问链接单元格,然后检查每个字符串中的链接数量(可能是搜索次href),然后根据它做行。
猜你喜欢
  • 2011-05-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多