过滤器
过滤器(Filters) 是vue为开发者提供的功能,用于文本的格式化,过滤器可以在 插值表达式
和 v-bind
属性绑定使用
过滤器应该被卸载 JavaScript 表达式的尾部,由|
符号来调用
快速使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| <div id="app"> <p>message 的值是:{{ message | capi }}</p> </div> <div id="app2"> <p>message 的值是:{{ message | capi }}</p> </div> <script> Vue.filter('capi', function (str) { const first = str.charAt(0).toUpperCase() const other = str.slice(1) return first + other + '~~~' }) const vm = new Vue({ el: '#app', data: { message: 'hello vue.js' }, filters: { capi(val) { const first = val.charAt(0).toUpperCase() const other = val.slice(1) return first + other } } }) const vm2 = new Vue({ el: '#app2', data: { message: 'heima' } }) </script>
|
message 的值是:Hello vue.js
message 的值是:Heima~~~
过滤器的注意点
- 要定义到
filters
节点下,本质是一个函数
- 在过滤器函数中,一定要有 return 值
- 在过滤器的形参中,可以获取到“管道符”前面待处理的那个值
- 如果全局过滤器和私有过滤器名字一致,此时按照“就近原则”,调用的是”私有过滤器“
品牌列表案例优化
我们可以写一个过滤器把《品牌列表案例》中的时间进行格式化
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| <td>{{ item.time | dateFormat }}</td> <script src="./lib/dayjs.min.js"></script> <script src="./lib/vue-2.6.12.js"></script> <script> Vue.filter('dateFormat', function (time) {
const dtStr = dayjs(time).format('YYYY-MM-DD HH:mm:ss') return dtStr }) </script>
|
过滤器的一些其他事项
连续调用过滤器
过滤器可以串联起来进行调用,如:
1 2 3 4
|
<td>{{ message | filterA | filterB }}</td>
|
过滤器调用传参
过滤器本质是一个Javascript的函数,因此可以接受参数
1 2 3 4 5 6 7 8 9 10 11
| <p>{{message | filterA(arg1,arg2) }}</p>
<script> Vue.filter('filterA',(msg,arg1,arg2)=>{ }) </script>
|