VUE filters 使用

什么是filters?
filters 翻译就是 过滤器,vue 官网表示,它就类似个格式化的工具
比如你渲染后端数据到标签,后端给你个时间戳,你需要自己去转换,那么如果不用filters,你就得在请求到数据时候去改变这个值,最后才是渲染上去;
如果你用了filters,那么你就可以直接在标签上面,通过 “管道符” —> “|” 来使用

过滤器可以用在两个地方:双花括号插值和 v-bind 表达式
如 :

//双花括号插值
{{ time | dateFormat}}
//v-bind 表达式 
<div v-bind:time"time | dateFormat"></div>

在页面JS中定义filters,与data同级

filters: {
  dateFormat: function (time) {
      var re = /-?\d+/
      var m = re.exec(time)
      var d = new Date(parseInt(m[0]))
      var o = {
        'M+': d.getMonth() + 1,
        'd+': d.getDate(),
        'h+': d.getHours(),
        'm+': d.getMinutes(),
        's+': d.getSeconds(),
        'q+': Math.floor((d.getMonth() + 3) / 3),
        'S': d.getMilliseconds()
      }
      var format = 'yyyy-MM-dd mm:ss'
      if (/(y+)/.test(format)) {
        format = format.replace(RegExp.$1, (d.getFullYear() + '').substr(4 - RegExp.$1.length))
      }
      for (var k in o) {
        if (new RegExp('(' + k + ')').test(format)) {
          format = format.replace(RegExp.$1, RegExp.$1.length === 1 ? o[k] : ('00' + o[k]).substr(('' + o[k]).length))
        }
      }
      return format
    }
}

这是局部定义过滤器的,还可以全局定义

新建filters.js,定义个对象,对象里面就是具体方法,最后抛出

const filterFun = {

	/* 格式化时间 */
	dateFormat: function(time) {
		var re = /-?\d+/
		var m = re.exec(time)
		var d = new Date(parseInt(m[0]))
		var o = {
			'M+': d.getMonth() + 1,
			'd+': d.getDate(),
			'h+': d.getHours(),
			'm+': d.getMinutes(),
			's+': d.getSeconds(),
			'q+': Math.floor((d.getMonth() + 3) / 3),
			'S': d.getMilliseconds()
		}
		var format = 'yyyy-MM-dd mm:ss'
		if (/(y+)/.test(format)) {
			format = format.replace(RegExp.$1, (d.getFullYear() + '').substr(4 - RegExp.$1.length))
		}
		for (var k in o) {
			if (new RegExp('(' + k + ')').test(format)) {
				format = format.replace(RegExp.$1, RegExp.$1.length === 1 ? o[k] : ('00' + o[k]).substr(('' + o[
					k]).length))
			}
		}
		return format
	}
}

export default filterFun

然后在main.js中引入,并注册

import Vue from 'vue'
import filters from './util/filters.js'


// 将filters.js中的所有过滤器都注册
for (let key in filters) {
  Vue.filter(key, filters[key])
}

最后页面使用

	<div>
	  <div>不加过滤器:{{time}}</div>
	  <div>加过滤器后:{{ time | dateFormat}}</div>
	</div>

写的有问题欢迎指正

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值