使用位置:
- mustachc插值
- v-bind表达式
- 添加在JavaScript的尾部
- 调用时的格式{{name | 过滤器的名称1 | 过滤器的名称N}}
- 格式Vue.filter('过滤器的名称',function(data){return data+'123'})过滤器function中的第一个参数已经被固定死,永远都是过滤器管道符前面传递过来的数据
- 过滤器可以处理多个数据
- 字符串的replace方法第一个参数课下字符串和正则表达式(/正则/g(全局匹配))
- padStart(maxlength,'补的内容')可以补全不够位的数据---(1=》01)
全局过滤器案例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="./lib/vue-2.4.0.js"></script>
</head>
<body>
<div id="app">
{{msg | msgFormat('123','12313') | test}}
</div>
<script>
Vue.filter('msgFormat',function(msg,arg,arg2){
//
return msg.replace(/山/g,arg+arg2)
})
Vue.filter('test',function(test){
return test+'fiul,fkosdihjsedmf'
})
var vm= new Vue({
el:"#app",
data:{
msg:'曾经啊啊啊,山的那边还有山',
},
methods:{
}
})
</script>
</body>
</html>
修改时间格式案例
<tr >
<td> {{ item.ctime| dateFormat }} </td>
</tr>
<script>
Vue.filter('dateFormat',function(datestr,pattern=""){
var dt= new Date(datestr)
var y=dt.getFullYear()
var m=dt.getMonth()+1.toString().padstart(2,'0')//填充两位
var d=dt.getDate().toString().padstart(2,'0')
// return `${y}-${m}-${d}`
if(pattern.toLowerCase() ==='yyyy-mm-dd'){
return `${y}-${m}-${d}`
}else{
var hh=dt.getHours().toString().padstart(2,'0')
var mm=dt.getMinutes().toString().padstart(2,'0')
var ss=dt.getSeconds().toString().padstart(2,'0')
return `${y}-${m}-${d} ${hh}:${mm}:${ss}`
}
})
var vm = new Vue({
el:'#app',
data:{
id:'',
name:'',
keywords:'',
list:[
{ctime:new Date()},
]
},
methods:{
add(){
var car ={ id:this.id,name:this.name,ctime: new Date()}
// console.log('ok')
this.list.push(car)
this.id=this.name=''
},
}
})
</script>
私有过滤器(局部)
- 过滤器名称
- 处理函数
- 过滤器名称一致时调用采用就近原则优先采用私有过滤器