You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
60 lines
1.8 KiB
60 lines
1.8 KiB
<!DOCTYPE html> |
|
<html lang="en"> |
|
<head> |
|
<meta charset="UTF-8"> |
|
<title>过滤器</title> |
|
<script type="text/javascript" src="../vue.js"></script> |
|
<script src="https://cdn.bootcdn.net/ajax/libs/dayjs/1.11.7/dayjs.min.js"></script> |
|
</head> |
|
<body> |
|
<div id="root"> |
|
<h2>显示格式化后的时间</h2> |
|
<!-- 计算属性实现--> |
|
<h3>计算属性实现:{{formatDatetime}}</h3> |
|
<!-- 方法实现--> |
|
<h3>方法实现:{{fmtDatetime()}}</h3> |
|
<!-- 过滤器实现--> |
|
<h3>过滤器实现1:{{time | formatDt}}</h3> |
|
<!-- 过滤器传参--> |
|
<h3>过滤器实现2:{{time | formatDt('YYYY_MM_DD')}}</h3> |
|
<!-- 多过滤器--> |
|
<h3>多过滤器实现:{{time | formatDt('YYYY_MM_DD') | yearSlice}}</h3> |
|
<!-- 全局过滤器--> |
|
<h3>全局过滤器:{{time | formatDt('YYYY_MM_DD') | globalSlice}}</h3> |
|
<!-- 绑定时使用过滤器--> |
|
<h3 :t="time | formatDt">绑定时使用过滤器:F12</h3> |
|
</div> |
|
|
|
</body> |
|
<script type="text/javascript"> |
|
Vue.config.productionTip = false |
|
// 全局过滤器 |
|
Vue.filter('globalSlice', function (val) { |
|
return val.slice(0, 4) |
|
}) |
|
const vm = new Vue({ |
|
el: '#root', |
|
data: { |
|
time: Date.now() |
|
}, |
|
methods: { |
|
fmtDatetime() { |
|
return dayjs(this.time).format("YYYY年MM月DD日 HH:mm:ss") |
|
} |
|
}, |
|
computed: { |
|
formatDatetime() { |
|
return dayjs(this.time).format("YYYY-MM-DD HH:mm:ss") |
|
} |
|
}, |
|
filters: { |
|
formatDt(val, fmt_str = "YYYY_MM_DD HH:mm:ss") { |
|
return dayjs(val).format(fmt_str) |
|
}, |
|
yearSlice(val) { |
|
return val.slice(0, 4) |
|
} |
|
} |
|
}) |
|
</script> |
|
</html> |