创建一个过滤器能造福很多从后台传过来的时间值
1.在项目中创建一个Date.js包
Date.js源码:
//给Date类添加了一个新的实例方法format
Date.prototype.format = function (fmt) {
//debugger;
let o = {
"M+": this.getMonth() + 1, //月份
"d+": this.getDate(), //日
"h+": this.getHours(), //小时
"m+": this.getMinutes(), //分
"s+": this.getSeconds(), //秒
"q+": Math.floor((this.getMonth() + 3) / 3), //季度
"S": this.getMilliseconds() //毫秒
};
if (/(y+)/.test(fmt))
fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
for (let k in o)
if (new RegExp("(" + k + ")").test(fmt))
fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
return fmt;
};
export function fmtDate(date, pattern){
let ts = date.getTime();
let d = new Date(ts).format("yyyy-MM-dd hh:mm:ss");
if (pattern) {
d = new Date(ts).format(pattern);
}
return d.toLocaleString();
}
2.如何在页面.vue中引用
2.1在script中调用过滤器:
<script>import { fmtDate } from '@/components/xjb/date.js';</script>
2.2 然后在自定义属性(filters)中加入:
filters: {
filtedate: function(date) {
let t = new Date(date);
return fmtDate(t, 'yyyy-MM-dd hh:mm:ss');
}
}
3.把数据值转换为想要的格式:
3.1在el-table-column标签中使用过滤器:
3.2在el-form-item中使用过滤器:
4.属性介绍(了解):
Data(初始化属性):
组件中的data和实例中的data不同,组件中的data属性对应一个函数,返回值是一个对象;而实例中的data直接对应一个对象。
methods(方法属性):
表示一个具体的操作, 主要写 业务逻辑;(场景:方法的调用)
computed(计算属性):
属性的结果会被缓存, 除非依赖的响应式属性变化才会重新计算, 主要 当做属性来使用;(虽然是个方法,但是当做属性使用)(场景:引用一些经过操作的数据)
watch(监听器)一个对象, 键是需要观测的表达式, 值是对应的回调函数. 主要用来 监听某些特定数据的变化,从而进行某些业务逻辑的操作; 可以看做是computed和methods的结合体;(场景:监听路由地址)
watch和computed的区别
两者都是监听vue属性,但是computed属性中需要一个返回值,而且代码是同步执行,而watch则不需要,代码也可以是异步的。
自定义属性:
filters: {
filtedate: function(date) {
let t = new Date(date);
return fmtDate(t, 'yyyy-MM-dd hh:mm:ss');
}
}
props(父组件向子组件传值):
接受父组件传过来的值,可以直接定义成一个数组。也可以是一个对象用传过来的值做校验等