过滤器的作用:
格式化数据,比如将字符串格式化为首字母大写,将日期格式化为指定的格式等。
自定义过滤器:
Vue.filter('过滤器名称', function(value){
// 过滤器业务逻辑
})
过滤器的使用
<div>{{msg | upper}}</div>
<div>{{msg | upper | lower}}</div>
<div v-bind:id='id | formatId' ></div>
案例:(全局过滤器)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
<div id='app'>
<div><input type="text" v-model='msg'></div>
<div>{{msg | upper}}</div>
</div>
<script>
Vue.filter('upper', function (value) {
// 过滤器业务逻辑
// 首字母大写
return value.charAt(0).toUpperCase() + value.slice(1)
})
var vm = new Vue({
el: '#app',
data: {
msg:''
},
methods: {
}
})
</script>
</body>
</html>
局部过滤器:
只能在当前文件内生效
案例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
<div id='app'>
<div><input type="text" v-model='msg'></div>
<div>{{msg | upper}}</div>
</div>
<script>
var vm = new Vue({
el: '#app',
data: {
msg: ''
},
filters: {
upper: function () {
// 过滤器业务逻辑
// 首字母大写
return value.charAt(0).toUpperCase() + value.slice(1)
}
}
})
</script>
</body>
</html>
带参数的过滤器:
Vue.filter('format', function (value, arg) {
// value 就是过滤器传递过来的参数
}
过滤器的使用:
<div> {{date | format('YYYY-MM-dd' }} </div>
案例:使用过滤器格式化日期
1 <!DOCTYPE html> 2 <html lang="en"> 3 4 <head> 5 <meta charset="UTF-8"> 6 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 7 <meta http-equiv="X-UA-Compatible" content="ie=edge"> 8 <title>Document</title> 9 <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> 10 </head> 11 12 <body> 13 <div id='app'> 14 15 <div>{{date | format("YYYY-MM-dd")}}</div> 16 17 </div> 18 19 <script> 20 var vm = new Vue({ 21 el: '#app', 22 data: { 23 date: new Date() 24 }, 25 filters: { 26 format: function (value, arg) { 27 console.log('time', value, 'arg', arg) 28 if (arg === 'YYYY-MM-dd') { 29 var ret = '' 30 ret += value.getFullYear() + '-' + (value.getMonth() + 1) + '-' + value.getDate() 31 } 32 return ret 33 } 34 } 35 }) 36 </script> 37 </body> 38 39 </html>