vue filter时间戳的转换 批量同一规则改动

vue filter的使用

写vue的时候遇到一个问题需要将时间戳转换成字符串显示在页面上

element ui table里面的数据直接可以用formatter来实现用来格式化其内容

<el-table-column prop="tUpdateTime" label="更新时间" :formatter="formatter" width="100"></el-table-column>

//js
formatter(row, column,cellValue) {
  let date = new Date(cellValue);
  let y = date.getFullYear();
  let MM = date.getMonth() + 1;
  MM = MM < 10 ? "0" + MM : MM;
  let d = date.getDate();
  d = d < 10 ? "0" + d : d;
  let h = date.getHours();
  h = h < 10 ? "0" + h : h;
  let m = date.getMinutes();
  m = m < 10 ? "0" + m : m;
  let s = date.getSeconds();
  s = s < 10 ? "0" + s : s;
  return y + "-" + MM + "-" + d + " " + h+":" + m + ":" + s;
},

页面里面确定个数单个的转换可以直接使用computed属性

<li v-show="haveal"><span class="blanking3">立案日期</span>{{aaa}}</li>

//js
computed: {
  aaa(){
    let date = new Date(this.tableRadio.cRegisterDate);
    let y = date.getFullYear();
    let MM = date.getMonth() + 1;
    MM = MM < 10 ? "0" + MM : MM;
    let d = date.getDate();
    d = d < 10 ? "0" + d : d;
    return y + "-" + MM + "-" + d + " ";
  }
},

但是面对后台的数组里面的 不定个数的转换 操作用computed解决不了
查了很久的资料发现可以使用vue自带的filter过滤器,使用十分简单

<li><span class="blanking1">时间</span>{{item.assignTime | time}}</li>
//和method同级
filters: {
  time(cellValue) {
    let date = new Date(cellValue);
    let y = date.getFullYear();
    let MM = date.getMonth() + 1;
    MM = MM < 10 ? "0" + MM : MM;
    let d = date.getDate();
    d = d < 10 ? "0" + d : d;
    let h = date.getHours();
    h = h < 10 ? "0" + h : h;
    let m = date.getMinutes();
    m = m < 10 ? "0" + m : m;
    let s = date.getSeconds();
    s = s < 10 ? "0" + s : s;
    return y + "-" + MM + "-" + d + " " + h+":" + m + ":" + s;
  },
}



vue filter的使用格式

vue中的过滤器分为两种:局部过滤器和全局过滤器

1.定义无参全局过滤器

<div id="app">
     <p>{{ msg | msgFormat}}</p>
</div>
<script>
	// 定义一个 Vue 全局的过滤器,名字叫做  msgFormat
	Vue.filter('msgFormat', function(msg) {
		// 字符串的  replace 方法,第一个参数,除了可写一个 字符串之外,还可以定义一个正则
		return msg.replace(/单纯/g, 'xx')
	})
</script>

2.定义有参全局过滤器

<div id="app">
	<p>{{ msg | msgFormat('疯狂','--')}}</p>
</div>
<script>
	// 定义一个 Vue 全局的过滤器,名字叫做  msgFormat
	Vue.filter('msgFormat', function(msg, arg, arg2) {
		// 字符串的  replace 方法,第一个参数,除了可写一个 字符串之外,还可以定义一个正则
		return msg.replace(/单纯/g, arg+arg2)
	})
</script>

3.局部过滤器

局部过滤器的有参和无参的定义和使用方法与全局的过滤器一样。唯一的区别在于局部过滤器是定义在vue的实例中。其作用的区域也是vue实例【#app】控制的区域

// 创建 Vue 实例,得到 ViewModel
var vm = new Vue({
    el: '#app',
    data: {},
    methods: {},
    //定义私用局部过滤器。只能在当前 vue 对象中使用
    filters: {
        dataFormat(value) {
            return value+'Hello!';
        }
    }
});

注意:
1、 当有局部和全局两个名称相同的过滤器时候,会以就近原则进行调用,即:局部过滤器优先于全局过滤器被调用!
2、 一个表达式可以使用多个过滤器。过滤器之间需要用管道符“|”隔开。其执行顺序从左往右

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值