vue过滤器filters

34 篇文章 1 订阅
18 篇文章 4 订阅

在vue中有个类似实例组件中computed的资源选项,那便是过滤器filters,为什么说类似呢,因为他们都可以对已有的数据进行加工再返回加工后的数据,但是两者又有着明显的区别,下面先阐述什么是vue过滤器

1.用途:常在v-bind与{{}}里使用

2.本质:是声明的函数,最终返回结果

3.声明:可在实组件例局部声明也可在全局声明

 使用方法如下

声明过滤器

<template>
	<div>
		<input v-model="name">
		<!-- 属性 | 过滤器 -->
		{{name | upName}}
	</div>
</template>

<script>
	export default {
		name: 'Test',

		data() {
			return {
				name: ''
			}
		},

		//申明过滤器
		filters: {
			upName(val) {
				if (!val) return '';
				return val.toUpperCase();
			}
		}
	}
</script>

如上所示,过滤器的声明与computed十分类似,在filters中可以声明若干个过滤器,但是与computed不同的是其与数据解耦,不会依赖实例中$data中的数据,这个很容易理解,自己稍微思考一下就明白了

使用规则在花括号中{{属性 | 过滤器 | 过滤器 | ...}},你没有看错,这里可以使用若干个过滤器串联起来,并且是顺序关系,即按照顺序执行,后一个过滤器以前一个过滤器返回结果作为参数,第一个过滤器以绑定属性作为参数

此外由于过滤器是函数性质,因此可以传参,即默认参数之外可以额外指定参数

<template>
	<div>
		<input v-model="name">
		<!-- 属性 | 过滤器 -->
		<p>{{name | upName('20','mouse')}}</p>
	</div>
</template>

<script>
	export default {
		name: 'Test',

		data() {
			return {
				name: 'q'
			}
		},

		//申明过滤器
		filters: {
			upName(name,age,nick) {
				return `name is:${name},age is:${age},nick is:${nick}`;
			}
		}
	}
</script>

效果如下所示 

 

 

 同样可以定义全局过滤器

import Vue from 'vue'
import App from './App'
import router from './router'

Vue.filter('test',(val) => {
	if(!val) return '';
	return val.toUpperCase();
})

Vue.config.productionTip = false

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

使用时直接在组件实例中使用即可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值