Vue (第4篇教程 Vue.filter过滤器)

1、过滤器:

vue 官方文档这样说:Vue.js 允许你自定义过滤器,可被用于一些常见的文本格式化。过滤器可以用在两个地方:双花括号插值和 v-bind 表达式 (后者从 2.1.0+ 开始支持)。过滤器应该被添加在 JavaScript 表达式的尾部,由“管道”符号指示:

<!-- 在双花括号中 -->
{{ message | capitalize }}

<!-- 在 `v-bind` 中 -->
<div v-bind:id="rawId | formatId"></div>
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Vue.filter</title>
</head>
<body>
   <div id="app">
     <input type="text" v-model="name">
     <p>{{name}}</p>
     <p>{{name | msgFilterName}}</p>
   </div>
</body>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
		//首先创建一个过滤器    
    //Vue.filter("",function(){})     两个参数,第一个是过滤器的名字,第二个是回调函数
	Vue.filter("msgFilterName",function(name){
		return name.replace("web前端工程师","Java开发工程师")
	});

	var vm = new Vue({
		el:'#app',
		data:{
			name:'hello,web前端工程师'
		}
	})

</script>
</html>

 

此时,web 前端工程师已被替换成Java开发工程师。

2、局部过滤器

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Vue.filter 局部过滤器</title>
</head>
<body>
   <div id="app">
     <p>{{name}}</p>
     <p>{{name | FilterName}}</p>
   </div>

   <div id="app1">
     <p>{{name1}}</p>
     <p>{{name1 | FilterName}}</p>
   </div>
</body>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>

	var vm = new Vue({
		el:'#app',
		data:{
			name:'hello,web前端工程师'
		},
		filters:{
			FilterName:function (name) {
				return name.replace("hello","你好")
			}
 
		}
	});

	var vm1 = new Vue({
		el:'#app1',
		data:{
			name1:'hello,web前端工程师'
		}
	})

</script>
</html>

 

此时我们发现:vm对象中定义的过滤器在vm1中绑定的div中是不可以使用的,只能在定义的Vue对象绑定的div中使用,这就是局部过滤。 

3、全局过滤器

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Vue.filter 全局过滤器</title>
</head>
<style>
	#app1 p{
		color:red;
	}
</style>
<body>
   <div id="app">
     <p>{{name}}</p>
     <p>{{name | msgFilterName}}</p>
   </div>
   <div id="app1">
     <p>{{name1}}</p>
     <p>{{name1 | msgFilterName}}</p>
   </div>
</body>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
	//首先创建一个过滤器    
    //Vue.filter("",function(){})     两个参数,第一个是过滤器的名字,第二个是回调函数
	Vue.filter("msgFilterName",function(name){
		return name.replace("web前端工程师","Java开发工程师"+"我是全局过滤器")
	});

	var vm = new Vue({
		el:'#app',
		data:{
			name:'hello,web前端工程师,我是第一个vue对象'
		}
	});
	var vm1 = new Vue({
		el:'#app1',
		data:{
			name1:'hello,web前端工程师,我是第二个vue对象'
		}
	})

</script>
</html>

此时我们定义的过滤器在vm对象中以及绑定的div和vm1对象中以及绑定的div中是可以使用的,这就是全局过滤。 

*在vue官方文档中提醒我们:当全局过滤器和局部过滤器重名时,会采用局部过滤器。

4、过滤器传值

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>过滤器传值</title>
</head>
<body>
   <div id="app">
     <p>{{name}}</p>
     <p>{{name | msgFilterName(",今年18岁,来自山东青岛")}}</p>
 </div>
</body>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
	//首先创建一个过滤器    
    //Vue.filter("",function(){})     两个参数,第一个是过滤器的名字,第二个是回调函数
	Vue.filter("msgFilterName",function(name,age){
		return name.replace("web前端工程师","Java开发工程师"+ age)
	});

	var vm = new Vue({
		el:'#app',
		data:{
			name:'hello,我是web前端工程师'

		}
	})

</script>
</html>

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值