为何$formatNumber在表格数组中使用时输出NaN,该如何解决?
表格内数组数据使用$formatNumber格式化失效的解决方案
失效核心原因
QuoteLineItems.records是存储所有发票行项目的数组类型,你直接使用QuoteLineItems.records.AmountNet的写法,是尝试从数组对象本身读取AmountNet属性,数组本身不存在该属性,因此传入$formatNumber的参数为undefined,最终输出NaN。
解决方案
- 第一步:给发票行项目对应的表格行配置数组循环绑定。主流Word文档合并工具均支持表格重复行功能,你需要将表格行的遍历源绑定到
QuoteLineItems.records数组,语法通常为在表格行标记中添加{{#each QuoteLineItems.records}}(不同工具语法略有差异,可对应查看工具的数组循环规则)。 - 第二步:修改表格内的格式化表达式。完成循环绑定后,表格每一行的上下文自动对应
records数组中的单个行项目对象,直接写如下表达式即可生效:{{ $formatNumber(AmountNet, '#,###.00') }}
兼容兜底方案
如果存在部分AmountNet为字符串类型的场景,可以先做类型转换再格式化,避免异常:{{ $formatNumber(Number(AmountNet), '#,###.00') }}
如果不需要动态循环,只是要取数组中指定位置的行项目数据,直接加下标即可,例如取第一条行项目的税后金额:{{ $formatNumber(QuoteLineItems.records[0].AmountNet, '#,###.00') }}
你提供的示例输入数据如下:
{ "QuoteLineItems": { "records": [ { "AmountGross": 47897, "AmountNet": 44556, "Name": "Sample Charges" }, { "AmountGross": 4968, "AmountNet": 4621, "Name": "Sample 2 Charges" } ], "done": true, "totalSize": 2 }, "Name": "Sample Invoice" }
用以上配置生成PDF后,表格对应列会依次输出44,556.00、4,621.00,格式化规则正常生效。
内容的提问来源于stack exchange,提问作者Greg J
相关产品推荐
相关产品推荐

