前言
在说过滤器时,我们要从
概念
,使用
,方式
等几个方面入手去说
- 首先
过滤器
是格式化文本输出
。- 过滤器分为:
全局过滤器
和局部过滤器
。- 优先级: 全局过滤器和局部过滤器重名时,会采用局部过滤器。
全局过滤器
全局过滤器在多个实例以及组件中使用
语法:Vue.filter("名",function(形参){默认的第一形参就是调用过滤器的变量})
定义位置:一定要在vue实例化之前定义
或在main.js中定义
。
//字符串首字母大写
Vue.filter("big",function(str){
var first=str.charAt().toUpperCase()
var end=str.substring(1,str.length);
console.log(end)
return first+end;
})
局部过滤器
局部过滤器只能在当前的实例或者组件中使用
- 语法:
filters:{名(形参){默认的第一形参就是调用过滤器的变量}}
- 定义位置: 单个组件中的
export default {}
//时间过滤器
var vm=new Vue({
el:"#app",
data:{
title:"hello",
timer:new Date()
},
filters:{
format(val){
var year=val.getFullYear();
var month=val.getMonth()+1;
var day=val.getDate();
var H=val.getHours();
var mi=val.getMinutes();
var ss=val.getSeconds()+"";
ss=ss.padStart(2,"0")
return `${year}/${month}/${day} ${H}:${mi}:${ss}`
}
}
})
调用
- 双花括号插值和
v-bind
表达式 ,通过管道符
( | )
来连接。- 过滤器可以串联
{{变量|过滤器名|过滤器名2}}
。- 过滤器有参数时
{{变量 | 过滤器(参数)}}
。
<body>
<div id="app">
{{ title | big }}
{{ timer | format}}
</div>
</body>