javascript - 如何在 Cx 的字段值表达式中使用自定义全局函数?

标签 javascript cxjs

我有一个有点复杂的案例,我需要将自定义格式应用于计算网格内字段值的 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

关于javascript - 如何在 Cx 的字段值表达式中使用自定义全局函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44636012/

相关文章:

javascript - 如何在jquery中为动态数据创建函数

node.js - 快速启动(没那么快)

javascript - Cx框架: How to set align:right and decimal precision on NumberField

cxjs - CX JS - 将 html 插入窗口的标题属性

javascript - 谷歌浏览器中的跨域设置

javascript - 防止响应图像跳转?

javascript - Angular/Typescript - 另一个数组错误的对象数组

javascript - 拦截并替换掉在可排序对象上的项目