Vue封装全局过滤器Filters的步骤
(PS:本文代码在vue-cli3构建的基础vue项目之上进行编写:vuecreatemy-project)
在前后端分离的项目中,经常会有后台返回的数据需要经过处理才能显示到页面上的场景。
使用最多的场景就是日期/时间、数字、字符串的格式化处理,实际业务中可能还有更复杂的数据处理逻辑。
下面就拿封装全局的处理数字和字符串的filter来展示vue如何封装全局filter并统一处理。
一、定义/封装过滤器
在src目录下新建filters目录用来专门存放全局过滤器,如果项目的过滤器过多,那么就要按类型分类。
如果项目需要前台处理的数据不是太多,那么就在filters目录下新建一个index.js来存放所有的过滤器就足够了。
index.js代码如下:
//封装过滤器 //过滤器的声明可以有下列多种写法 /** *Numberformattingbyunit *like10000=>10k *@param{number}num *@param{number}digits *@return{string} */ functionnumberFormatter(num,digits){ constsi=[ {value:1e18,symbol:"E"}, {value:1e15,symbol:"P"}, {value:1e12,symbol:"T"}, {value:1e9,symbol:"G"}, {value:1e6,symbol:"M"}, {value:1e3,symbol:"k"} ]; for(leti=0;i=si[i].value){ return(num/si[i].value+0.1).toFixed(digits).replace(/\.0+$|(\.[0-9]*[1-9])0+$/,'$1')+si[i].symbol } } returnnum.toString(); } /** *Numberformattingbythousand *like10000=>"10,000" *@param{number}num *@return{string} */ consttoThousandFilter=function(num){ return(+num||0).toString().replace(/^-?\d+/g,m=>m.replace(/(?=(?!\b)(\d{3})+$)/g,',')) }; /** *Uppercasefirstchar *like"wenyuan"=>"Wenyuan" *@param{string}string *@return{string} */ constuppercaseFirst=string=>{ returnstring.charAt(0).toUpperCase()+string.slice(1); }; exportdefault{ numberFormatter, toThousandFilter, uppercaseFirst };
二、注册过滤器
然后在main.js中引入注册即可使用:
importfiltersfrom"./filters";//globalfilters //registerglobalutilityfilters Object.keys(filters).forEach(key=>{ Vue.filter(key,filters[key]); });
三、在组件内使用写好的过滤器
在组件中使用:
score:{{score|numberFormatter}}
score:{{score|toThousandFilter}}
username:{{username|uppercaseFirst}}
四、效果
五、可能的报错与注意点
在main.js中,要先定义过滤器,再新建vue实例,否则会报Failedtoresolvefilter:xxx的错误。
以上就是Vue封装全局过滤器Filters的步骤的详细内容,更多关于vue封装过滤器的资料请关注毛票票其它相关文章!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。