当前位置: 首页 > Web前端 > HTML

【Vue】Filter使用详解

时间:2023-03-29 12:11:00 HTML

这周遇到了一个问题。业务来找我,说页面显示的数据和我预想的不一样。例如下图,没有数据时期望显示的是“--”(蓝框中的样式),而红框中显示的样式是“-”。本平台约定在没有数据的地方用“--”填充。上图展示的场景是一个表格,表格中每个表格单元格中的数据以百分比的形式显示。这里,后台传来的数据是浮点数形式,前端需要处理数据的显示形式。平台是vue2项目,很容易想到使用vue2提供的filter语法。{{数据|filter}}(注意:filter语法在vue3中已经删除,使用方法实现)具体实现上,我定义了一个filter,名字为formatToPencent,封装在displayFilterMixin中,在使用的组件中压入需要引入的Mixins。重点关注关键格式ToPencent的实现,以及为什么会变成“-”。formatToPercent的实现如下图所示。如果未定义,则返回“--”。注:plusSign的作用是适配“33.5%”和“+22.6%”的需求场景。正数默认不包含“+”。如果需要“+”,则传入plusSign=“+”。经分析,过滤没有问题,不会产生“-”。回到使用过滤器的地方。{{(数据/100)|formatToPercent}}就是问题所在,data===undefined,data/100结果为NaN,进入百分比,百分比将NaN处理成“-”。至此,问题的解决方案有两种:1、修改百分比,将NaN处理结果改为“--”。2、修改filter,将数据处理部分(data/100进程)放在undefined判断之后。个人感觉NaN是意想不到的结果,还是用方案2比较好。修改formatToPercent,增加radio参数用法也需要修改{{data|formatToPercent("",100)}}问题解决,完成。同步更新到语雀https://www.yuque.com/diracke...