enableCellChangeFlash
用于闪烁获取更新内容的单元格。
但是,我在几列上使用 valueFormatters,并且我只想在渲染内容而不是基础值发生变化时闪烁单元格内容。
示例:我的价格是浮动的,例如:3.2321393。我将其固定为 2 位小数(例如 3.23)。现在,我只想在渲染值发生变化(例如 3.24)时闪烁单元格,但当基础值发生变化(例如 3.23214)而没有可见变化时则不想闪烁。
这可能吗?
我建议将
enableCellChangeFlash
设置为 false,然后使用 onCellValueChanged
回调来查看应用 valueFormatter
后新值是否已更改,如果已更改,则使用 api 方法 flashCells
闪烁单元格。
这是您的
onCellValueChanged
的样子:
onCellValueChanged: function (params) {
const valueFormatter = params.column.getColDef().valueFormatter;
const newFormattedValue = valueFormatter
? valueFormatter({ value: params.newValue })
: params.newValue;
const oldFormattedValue = valueFormatter
? valueFormatter({ value: params.oldValue })
: params.newValue;
if (newFormattedValue != oldFormattedValue) {
// Flash the cell
params.api.flashCells({
rowNodes: [params.node],
columns: [params.column],
});
}
},
@ViqMontana 的答案指出了正确的方向,但需要为每个需要更新的单元格调用
flashCells
。
相反,我已将
equals
函数中的代码移植到可以选择 passed 到列定义中。
// Equals function to check if cell value has *visibly* changed. Only then the cell will flash
function equalsCellFN(valueA, valueB) {
const valueFormatter = this.valueFormatter;
const newFormattedValue = valueFormatter ? valueFormatter({ value: valueA }) : valueA;
const oldFormattedValue = valueFormatter ? valueFormatter({ value: valueB }) : valueB;
return oldFormattedValue === newFormattedValue
}