Vue2.0学习笔记-9、全局过滤器和私有过滤器的使用


vue中的过滤器只能在插值表达式或者v-bind指令中使用

1、全局过滤器

(1)语法

定义过滤器:

Vue.filter('过滤器名称',function(参数1,参数2...,参数n)
{
//代码
}

过滤器的调用:

		<div id="app">
			{{msg|过滤器名称}}
			<input :style="styleObj" type="text" name="" id="" :value="msg|过滤器名称" />
		</div>

其中,参数1永远是|运算符前面的变量,参数2至参数n是用户自定义的参数,可省略

(2)示例

a、全局过滤器的基本使用

代码:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
	</head>
	<body>
		<div id="app">
			{{msg|firstFilter}}
			<input :style="styleObj" type="text" name="" id="" :value="msg|firstFilter" />
		</div>
		<script type="text/javascript">
			Vue.filter('firstFilter',function(data){
				
				return data.replace(/青/g,'250');
			});
			var vm=new Vue({
				el:'#app',
				data:{
					msg:'青春啊青春,美丽的青春;狗爷退役了,我的青春结束了,爷青结!',
					styleObj:'display:block;width:100%',
				},
				methods:{
					
				},
			})
		</script>
	</body>
</html>

效果:
在这里插入图片描述

b、全局过滤器的串联使用

代码:注意这里,第二个过滤器的名称是中文,但是也不会报错,也就是说,过滤器名称可以是中文,但是不建议这么做

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
	</head>
	<body>
		<div id="app">
			{{msg|firstFilter|第二个过滤器}}
			<input :style="styleObj" type="text" name="" id="" :value="msg|firstFilter|第二个过滤器" />
		</div>
		<script type="text/javascript">
			Vue.filter('firstFilter',function(data){
				
				return data.replace(/青/g,'250');
			});
			Vue.filter('第二个过滤器',function(data){
				
				return data.replace(/250/g,'***');
			});
			var vm=new Vue({
				el:'#app',
				data:{
					msg:'青春啊青春,美丽的青春;狗爷退役了,我的青春结束了,爷青结!',
					styleObj:'display:block;width:100%',
				},
				methods:{
					
				},
			})
		</script>
	</body>
</html>

效果:
在这里插入图片描述

c、给全局过滤器的回调函数增加参数

代码:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
	</head>
	<body>
		<div id="app">
			{{msg|firstFilter|第二个过滤器('参数二','参数三')}}
			<input :style="styleObj" type="text" name="" id="" :value="msg|firstFilter|第二个过滤器('参数二','参数三')" />
		</div>
		<script type="text/javascript">
			Vue.filter('firstFilter',function(data){
				
				return data.replace(/青/g,'250');
			});
			Vue.filter('第二个过滤器',function(data,newData1,newData2){
				
				return data.replace(/250/g,'***')+newData1+newData2;
			});
			var vm=new Vue({
				el:'#app',
				data:{
					msg:'青春啊青春,美丽的青春;狗爷退役了,我的青春结束了,爷青结!',
					styleObj:'display:block;width:100%',
				},
				methods:{
					
				},
			})
		</script>
	</body>
</html>

效果:
在这里插入图片描述

2、私有过滤器

(1)语法

定义私有过滤器:

<script type="text/javascript">
			var vm=new Vue({
				el:'#app',
				data:{
					msg:'青春啊青春,美丽的青春;狗爷退役了,我的青春结束了,爷青结!',
					styleObj:'display:block;width:100%',
				},
				methods:{
					
				},
				filters:{//定义私有过滤器
					firstFilter:function(data)//过滤器名称
					{
						return data.replace(/青/g,'250');
					}
				}
			})
		</script>

调用和全局过滤器相同。

(2)示例

a、私有过滤器的基本使用(和全局过滤器相同)

b、私有过滤器的串联使用(和全局过滤器相同)

c、给私有过滤器的回调函数增加参数(和全局过滤器相同)

d、当全局过滤器和私有过滤器重名时(默认调用私有过滤器)

这个很好理解,当私有变量和全局变量重名时,默认调用私有变量,几乎所有编程语言都是这样。
代码:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
	</head>
	<body>
		<div id="app">
			{{msg|firstFilter|secondFilter('+++')}}
			<input :style="styleObj" type="text" name="" id="" :value="msg|firstFilter|secondFilter('+++')" />
		</div>
		<script type="text/javascript">
			Vue.filter('firstFilter',function(data){
						return data.replace(/春/g,'250');
					})
			var vm=new Vue({
				el:'#app',
				data:{
					msg:'青春啊青春,美丽的青春;狗爷退役了,我的青春结束了,爷青结!',
					styleObj:'display:block;width:100%',
				},
				methods:{
					
				},
				filters:{
					firstFilter:function(data){
						return data.replace(/青/g,'250');
					},
					secondFilter:function(data,newData){
						return data.replace(/250/g,'***')+newData;
					}
				}
			})
		</script>
	</body>
</html>

结果:
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值