Vue 过滤器
过滤器的作用:
格式化数据,比如将字符串格式化为首字母大写,将日期格式化为指定的格式等。
自定义过滤器:
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>