vue封装多个filters全局过滤器在一个文件

8 篇文章 0 订阅

实现的效果:
将所有的全局过滤器方法都放在filter.js文件中,在main.js进行全局注册,在其他vue组件中直接使用。

过滤器filters通常用来过滤一些状态为自己想要的形式,比如后台返回status

// num等于0, 1, 2
// 对应的状态 0:小甲鱼, 1: 带鱼, 2:美人鱼
status: num

这个时候过滤器就很方便了,如果只在某一个组件有这个状态,那直接在当前组件写个过滤器方法就行,如果在多个组件都用到这个状态,那么最好的方式就是将这个过滤器定义为全局过滤器,供多个组件通用,减少代码冗余度

直接上代码:

1、新建一个filters.js文件,内容如下:

const filters = {

  // 状态过滤器, 将数字0,1,2转化为对应文字状态
  // 状态(0:小甲鱼, 1: 带鱼, 2:美人鱼)
  deliverStatusFilter: function (val) {
    if (val == 0) {
      return '小甲鱼'
    } else if (val == 1) {
      return '带鱼'
    } else if (val == 2) {
      return '美人鱼'
    } else {
      console.log(val);
    }
  },

  timeFilter: function (time) {
	  // 第二个过滤器
  }
  // 多个过滤器直接依次写在这里即可  
}

export default filters

2、在main.js中注册为全局路由器

import Vue from 'vue'
import filters from './util/filters.js'

// 这种方式可以将filters.js中的所有过滤器都注册
for (let key in filters) {
  Vue.filter(key, filters[key])
}

new Vue({
  el: '#app',
  router,
  store,
  components: { App },
  template: '<App/>'
})

3、在组件中引用

<template>
	<div>
	  <p>不加过滤器:{{status}}</p>
	  <p>加过滤器后:{{status | deliverStatusFilter}}</p>
	</div>
</template>

<script>
export default {
	data () {
	  return {
	    status: 0
	  }
	}
}
</script>

展示效果
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值