vue基础之过滤器(filter)的使用
使用方式:<!-- 在双花括号中 -->{{ message | formatDate }}<!-- 在 `v-bind` 中 --><div v-bind:id="rawId | formatDate"></div>那么,我们该如何去写过滤器呢?接下来我们假定一种
·
使用方式:
<!-- 在双花括号中 -->
{{ message | formatDate }}
<!-- 在 `v-bind` 中 -->
<div v-bind:id="rawId | formatDate"></div>
那么,我们该如何去写过滤器呢?接下来我们假定一种场景,后端返回的一个 时间列表大概是长下边这样的:
[
{time: 1533527037000},
{time: 1533527037000},
{time: 1533527037000}
]
可以看到这个数组中有三个数据,分别是三个时间戳,如果没有过滤器,我们只能用普通的方式,循环这个数组,将每一项的时间戳转换为具体的事件。但是,vue提供的过滤器可以帮我们很好的解决这种问题。接下来我们看如何去使用过滤器解决。
首先定义过滤器有两种方式,第一种是全局过滤器,我们可以直接在vue对象上使用filter方法注册过滤器,这种全局注册的过滤器在任何一个组件内都可以使用。第二种则是组件内部的过滤器,注册组件内部过滤器则只能在当前组件内使用,接下来我们使用这两种方式注册过滤器函数。
全局过滤器:
import Vue from 'vue';
Vue.filter('formatTime', function (val) {
const date = new Date(val);
const hour = date.getHours();
const minutes = date.getMinutes();
const seconds = date.getSeconds();
return `${hour} : ${minutes} : ${seconds}`;
});
局部组件过滤器(局部过滤器直接在组件内写即可):
export default {
name: 'FilterDemo',
/* 局部过滤器 */
filters: {
/* 格式化时间戳 */
formatDate (val) {
const date = new Date(val);
const year = date.getFullYear();
const month = date.getMonth() > 9 ? date.getMonth() + 1 : `0${date.getMonth() + 1}`;
const day = date.getDate() > 9 ? date.getDate() + 1 : `0${date.getDate() + 1}`;
return `${year}-${month}-${day}`;
console.log(val);
}
},
data () {
return {
}
}
}
ok,接下来我们看下如何来使用:
<template>
<div>
<h2>vue过滤器:</h2>
<!-- 局部过滤器 -->
<p><b>{{ 1533527037000 | formatDate }}</b></p>
<!-- 全局过滤器 -->
<p><b>{{ 1533527037000 | formatTime }}</b></p>
</div>
</template>
在组件里,按照文章开头说的两种方式即可,注意组件内注册的过滤器(这里是formatDate)只能在当前组件内部使用。
更多推荐
已为社区贡献5条内容
所有评论(0)