在Vue.js中Filter过滤器是什么
在Vue.js中Filter常用于拦截数据,对数据进行进一步处理和展示,分为全局过滤器和局部过滤器,在网页开发中,最常用到的是对时间的处理,比如我们创建个时间,new Date()时间是中国标准时间(Tue Jul 13 2021 16:50:43 GMT+0800 (中国标准时间))这样我们就可以通过使用过滤器处理展示为我们日常看到的时间格式:2021-07-13 16:50:43,
说到底,过滤器就是拦截数据对数据进行再次处理并返回数据,在Vue.js中常在双花括号{{}}插值和 v-bind
表达式进行使用,
全局过滤器
创建getglobalFilter.ts全局过滤器文件(文件名字可以自己随便定义)
//首先在文件中引入Vue
import Vue from 'vue';
//以下为全局过滤器的定义(可以定义多个)
Vue.filter('globalFilter', function(value: any) {
return value+'我是全局过滤器';
});
Vue.filter('globalFilter1', function(value: any) {
return value+'我是全局过滤器1';
});
在main.ts文件里导入刚才定义的全局过滤器getglobalFilter文件
//导入需注册的全局过滤器的文件
import '@/views/unlawful-record/test/globalFilter';
导入完成就可以在页面中直接调用过滤器的名字进行使用
//定义一个变量
getglobalFilter: string ='调用全局过滤器-----'
//页面使用
<div>
<h1>全局过滤器</h1>
<p>{{getglobalFilter | globalFilter}}</p>
</div>
局部过滤器
局部过滤器可以在@Component里面的filters里进行定义
<script lang="ts">
//导入 Component, Prop, Vue, Watch等修饰器方法
import { Component, Prop, Vue, Watch } from 'vue-property-decorator';
//在Component里使用filters定义局部过滤器
@Component({
components: {},
filters: {
localFilter: (date: any) => {
let y = date.getFullYear();
let m = date.getMonth() + 1;
m = m < 10 ? '0' + m : m;
let d = date.getDate();
d = d < 10 ? '0' + d : d;
let h = date.getHours();
h = h < 10 ? '0' + h : h;
let minute = date.getMinutes();
let second = date.getSeconds();
minute = minute < 10 ? '0' + minute : minute;
second = second < 10 ? '0' + second : second;
return y + '-' + m + '-' + d + ' ' + h + ':' + minute + ':' + second;
},
},
})
export default class AllFilter extends Vue {
//定义一个时间变量
currentTime: any = new Date();
}
</script>
在页面中调用
<div>
<h1>局部过滤器</h1>
<p>{{ currentTime }}</p>
<p>使用局部过滤器处理时间:{{ currentTime | localFilter }}</p>
<!-- currentTime为定义的变量,localFilter 为局部定义的过滤器名字 -->
</div>