如何在 Cx 的字段值表达式中使用自定义全局函数?
How to use custom global functions inside field value expressions in Cx?
我有一个有点复杂的案例,我需要将自定义格式应用于 JavaScript 表达式,该表达式计算网格内字段的值。
<Grid records:bind="$page.data"
columns={[
{
field: 'seatbeltViolations',
header: 'Seatbelt Violations',
format:'n;0',
aggregate: 'sum',
aggregateField: 'seatbelts',
align: 'right'
},{
field: "distance",
header: "Distance",
format: "n;0",
aggregate: "sum",
aggregateField: "distance",
align: "right"
},{
field: 'seatbeltViolationsPer100Km',
header: 'Seatbelts per 100km',
format: 'n;1',
footer: {
expr: '0.1 * Math.round(10.0 * {$group.seatbelts}/{$group.distance})'
},
align: 'right'
}]} />
有没有办法在表达式中使用执行给定操作的自定义全局函数?像这样:
// this does not work
expr: 'Format.value({$group.seatbelts}/{$group.distance}, "n;1")'
我希望我的问题足够清楚:)
我认为最简单的方法是在这里使用 computable
而不是表达式。大致如下:
...
footer: computable("$group.seatbelts", "$group.distance", (p, q) =>
{
return q != 0 ? Format.value(100.0 * p / q, "n;1") : '--';
}),
...
这样您就可以拥有任意复杂的页脚,并且可以轻松地将逻辑抽象到一个通用工厂函数中,返回您想要的任何内容。举个例子,看看这个 fiddle:
https://cxjs.io/fiddle/?f=xWw8ob40
在字符串模板中使用表达式还有一个未记录的功能:
footer: {
tpl: '{[{$group.seatbelts} != 0 ? {$group.distance}/{$group.seatbelts} : null]:n;1}'
}
我有一个有点复杂的案例,我需要将自定义格式应用于 JavaScript 表达式,该表达式计算网格内字段的值。
<Grid records:bind="$page.data"
columns={[
{
field: 'seatbeltViolations',
header: 'Seatbelt Violations',
format:'n;0',
aggregate: 'sum',
aggregateField: 'seatbelts',
align: 'right'
},{
field: "distance",
header: "Distance",
format: "n;0",
aggregate: "sum",
aggregateField: "distance",
align: "right"
},{
field: 'seatbeltViolationsPer100Km',
header: 'Seatbelts per 100km',
format: 'n;1',
footer: {
expr: '0.1 * Math.round(10.0 * {$group.seatbelts}/{$group.distance})'
},
align: 'right'
}]} />
有没有办法在表达式中使用执行给定操作的自定义全局函数?像这样:
// this does not work
expr: 'Format.value({$group.seatbelts}/{$group.distance}, "n;1")'
我希望我的问题足够清楚:)
我认为最简单的方法是在这里使用 computable
而不是表达式。大致如下:
...
footer: computable("$group.seatbelts", "$group.distance", (p, q) =>
{
return q != 0 ? Format.value(100.0 * p / q, "n;1") : '--';
}),
...
这样您就可以拥有任意复杂的页脚,并且可以轻松地将逻辑抽象到一个通用工厂函数中,返回您想要的任何内容。举个例子,看看这个 fiddle: https://cxjs.io/fiddle/?f=xWw8ob40
在字符串模板中使用表达式还有一个未记录的功能:
footer: {
tpl: '{[{$group.seatbelts} != 0 ? {$group.distance}/{$group.seatbelts} : null]:n;1}'
}