使用场景:用于一些常用的文本格式化。
使用地方:
- 双花括号插值{{}}
{{message | captitalize}}
- v-bind表达式
<img :src="data.img | myImgFilter"/>
写法:
A. 全局过滤器
在js里定义一个全局过滤器,filter()函数有两个参数,
参数一:过滤器名(页面html引用过滤器根据这个名字);
参数二:回调函数(接受页面通过管道传过来的数据;数据处理完毕后通过return 关键字返到页面上)
Vue.filter("myImgFilter",(path)=>{
return path.replace('/w.h','')+'@1l_1e_1c_128w_180h'
})
<img :src="data.img | myImgFilter"/>
B. 局部过滤器
在vue组件中定义过滤器,在页面html上引用
new Vue({
el:'#box',
data:{
datalist:[]
},
filters:{
filterImgMethod: (path){
return path.replace('/w.h','')+'@1l_1e_1c_128w_180h'
}
}
}
<img :src="data.img | filterImgMethod"/>
过滤器传参:
{{message | filterA('arg1','arg2')}}
这里,filterA被定义为接收三个参数的过滤器函数。其中message的值作为第一个参数
Vue.filter("filterA",(message,arg1,agr2)=>{
console.log(message); //从页面上经过过滤器管道传递过来的第一个参数
console.log(arg1); //从页面上经过过滤器管道传递过来的第二个参数
console.log(arg2); //从页面上经过过滤器管道传递过来的第三个参数
return path.replace('/w.h','')+'@1l_1e_1c_128w_180h'
})