【vue】filter过滤器的用法

前言

过滤器filter经常被用在文本的格式化。比如时间戳的转化,价格符号的添加(¥),分为局部过滤器和全局过滤器。

种类
一、局部过滤器

写在组件内部,供该组件使用

1.定义单个过滤器afterprice,给价格添加符号

       <ul>
		   <li v-for="item,index in list">
			   <span>{{item.name}}:</span>
			   <span>{{item.price|afterprice(item.price)}}</span>
		   </li>
	   </ul>
  data(){
	  return{
		  list:[
			  { name:'oppo reno1',price:2999},
			  { name:'oppo reno2',price:3999},
			  { name:'oppo reno3',price:4999}
		  ]
	  }
  },
  filters:{
	  afterprice(item){
		  return '¥'+item
	  }
  }

结果:
在这里插入图片描述
注意:

调用过滤器时可以不用传入数据,默认第一个参数即为该数据。即<span>{{item.price|afterprice}}</span>,这种写法默认将item.price传入过滤器

2.定义多个过滤器,第一个过滤器afterpriceA将数据执行加1的操作,并将结果传入第二个过滤器afterpriceBafterpriceB执行添加符号将结果输出页面

       <ul>
		   <li v-for="item,index in list">
			   <span>{{item.name}}:</span>
			   <span>{{item.price|afterpriceA(1)|afterpriceB}}</span>
		   </li>
	   </ul>
  data(){
	  return{
		  list:[
			  { name:'oppo reno1',price:2999},
			  { name:'oppo reno2',price:3999},
			  { name:'oppo reno3',price:4999}
		  ]
	  }
  },
  filters:{
	  afterpriceA(item,x){
		  return item+x
	  },
	  afterpriceB(item){
		  return '¥'+item
	  }
  }

结果:
在这里插入图片描述
注意:

afterpriceA(1)默认第一个参数为前面的数据,省略不写。1为第二个参数

二、全局过滤器

可以将全局过滤器写在main.js,为了方便管理写在单独文件filter.js,然后在main.js引入。

1.创建filter.js文件,写过滤器

const afterpriceA = function(val){
	return '¥'+val
}
const afterpriceB = function(val,add){
	return '¥'+(val+add)
}
const afterpriceC = function(val,red){
	return '¥'+(val-red)
}

export default{
	afterpriceA,
	afterpriceB,
	afterpriceC
}

2.在main.js引入

import  filter from './filters/filter.js'

//循环注册
Object.keys(filter).forEach(key => {
  Vue.filter(key,filter[key])
})

3.组件使用

       <ul>
		   <li v-for="item,index in list">
			   <span>{{item.name}}:</span>
			   <span>{{item.price| afterpriceA}}</span>
		   </li>	   
	   </ul>
	   <ul>
	   		   <li v-for="item,index in list">
	   			   <span>{{item.name}}:</span>
	   			   <span>{{item.price| afterpriceB(1)}}</span>
	   		   </li>	   
	   </ul>
	   <ul>
	   		   <li v-for="item,index in list">
	   			   <span>{{item.name}}:</span>
	   			   <span>{{item.price| afterpriceC(999)}}</span>
	   		   </li>	   
	   </ul>

结果:
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值