如何在Docxtemplater中组合使用toLocaleNumber与toFixed多过滤器?
在Docxtemplater中实现带固定两位小数的本地化数字格式
你不需要同时组合toFixed和toLocaleNumber两个过滤器,toLocaleNumber本身就支持通过配置参数实现固定小数位数的需求,这是更简洁高效的解决方案:
直接用toLocaleNumber的配置参数实现需求
Docxtemplater的toLocaleNumber过滤器可接收第二个参数作为本地化配置项,通过指定minimumFractionDigits和maximumFractionDigits为2,就能强制显示两位小数,同时保留德语(de-de)的本地化格式:
在模板中写入:
EUR {price | toLocaleNumber: 'de-de', {minimumFractionDigits: 2, maximumFractionDigits: 2}}
测试效果:
- 当
price为500.50时,输出:EUR 500,50 - 当
price为500时,输出:EUR 500,00
若需链式调用过滤器(可选)
如果确实需要组合多个过滤器,Docxtemplater支持链式调用(按书写顺序依次执行)。但注意顺序很关键:需先通过toFixed固定小数位数,再将结果转回数字类型,最后用toLocaleNumber做本地化转换。
首先注册一个自定义的toNumber过滤器用于类型转换:
doc.setOptions({ filters: { toNumber: function(value) { return parseFloat(value); } } });
然后在模板中链式调用:
EUR {price | toFixed: 2 | toNumber | toLocaleNumber: 'de-de'}
不过这种方式步骤冗余,不如直接使用toLocaleNumber的配置参数方案高效,因此更推荐第一种实现方式。
内容的提问来源于stack exchange,提问作者Jenny_cgn21
相关产品推荐
相关产品推荐

