【发布时间】:2021-07-09 12:01:26
【问题描述】:
我正在从 JSON 文件加载动态表,在 td 上,我使用角度表达式根据一些应用程序逻辑评估 css 类名 HTML 和 TS 代码如下所示
<td *ngFor='let colData of rowData.columns'
id="{{colData.colIndex}}"
(click)="selectColumn(colData.colIndex)"
[ngClass]="getColumnClassName(colData.colIndex,rowData.rowIndex)"
name="cell">
{{colData.cell.value}}
</td>
getColumnClassName(selectedColIndex,selectedRowIndex):string {
var colSelected = 'cell-default';
if (this.selectionSettings.columnsToSelect.filter(e => e.colIndex === selectedColIndex).length > 0) {
if (selectedRowIndex >= this.selectionSettings.startIndex ) {
colSelected = 'cell-selected'
}
}
return colSelected;
}
这工作正常。
有时 JSON 可能包含如此多的记录 [1000 行和 10 列] 所以这个 CSS 表达式将被计算 1000*10 次。这个列表也有可能增加
在性能方面,这种分配 CSS 类的方法是否最佳?我感觉 UI 在渲染有这么多记录的表时会被冻结 我们如何确保浏览器没有过载,但正确分配 CSS 类?
【问题讨论】:
-
向您的元素添加一个新属性,遍历行和列。有人喜欢:stackoverflow.com/questions/68263984/….
-
[ngClass]="getColumnClassName(colData.colIndex,rowData.rowIndex)" 此函数将调用无限次,因为您正在访问 DOM 中的函数,当您滚动或单击该函数调用多次时因为你感觉冻僵了
标签: angular typescript ng-class angular-ng-class