关于vue的过滤器

平时我们在vue中使用过滤器时,在组件中定义的过滤器不能在其他组件中使用,所以要在每个组件中定义自己的filter,这样就会出现很多重复的代码,那有没有办法定义一个公用的filter,减少代码的重复呢?

下面就给大家展示下使用最多且有效的方法吧!

首先在公用js中定义一个通用的filter.js,如下图所示,记得一定要把代码整个export出来
const vFilter={
  numFilter:function (value) {
      // 截取当前数据到小数点后两位
      let realVal = Number(value).toFixed(2)
      return realVal
    }
  }
 
export default vFilter
然后在main.js中引入
import vueFilter from './js/filter'
for (let key in vueFilter){
  Vue.filter(key,vueFilter[key])
}
这样我们就可以在组件中尽情使用啦,比如说
<p class="goods-info-p ">¥{{goodsItem.goodsPrice|numFilter}}</p>
 

 

 

 

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <script src="vue.js"></script> <style> </style> </head> <body> <div id="app"> <!--输出的字符串中a的个数--> <span>msg的值:{{msg}},其中a的个数:</span> {{msg | myfilter('a')}} <br> <!--输出的字符串中b的个数--> <span>msg的值:{{msg}},其中b的个数:</span> {{msg | myfilter | myfilternumber}} </div> </body> <script type="text/javascript"> Vue.filter("myfilter", function(value, arg) { //返回一个对象或者json字符串,列出字符串中的字符以及字符的个数,不区分大小写 var obj = {}; var s = value.split('').sort().join(""); var reg = /(.)\1+/ig; var str = s.replace(reg, "$1"); //字符串去重后的结果 var i = 0, n, a; while (s.length > 0) { a = str.charAt(i); n = s.lastIndexOf(a) + 1; obj[a] = n; s = s.substring(n); i++; } return arg ? obj[arg] : obj; }); Vue.filter("myfilternumber", function(value) { return value.b; }); var app1 = new Vue({ el: "#app", data: { msg: "a1a1aba2babac" }, methods: { } }); </script> </html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值