前言
filter过滤器可以用来格式化数据,只能用在插值表达式或者v-model之类的组件上面。分为全局过滤器和私有过滤器,在定义的方法上稍有区别。
定义全局过滤器
Vue.js 允许你自定义过滤器,可被用于一些常见的文本格式化。过滤器可以用在两个地方:双花括号插值和 v-bind 表达式 (后者从 2.1.0+ 开始支持)。过滤器应该被添加在 JavaScript 表达式的尾部,由“管道”符号指示:1
<td>{{item.time | dateformat}}</td>
1 | Vue.filter('dateformat',function(date){ |
过滤器可以串联:1
{{ message | filterA | filterB }}
在这个例子中,filterA 被定义为接收单个参数的过滤器函数,表达式 message 的值将作为参数传入到函数中。然后继续调用同样被定义为接收单个参数的过滤器函数 filterB,将 filterA 的结果传递到 filterB 中。
过滤器是 JavaScript 函数,因此可以接收参数:1
<td>{{item.time | dateformat('yyyy-mm-dd')}}</td>
1 | Vue.filter('dateformat',function(date,agr=''){//最好给参数设置一个默认值,防止出现bug |
定义私有过滤器
1 | filters:{ |
通过一个对象来设置,整体与全局设置的方法差不多。
学习到的一些知识
- 可以通过
`${y}-${m}-${d} ${h}:${min}:${s}`
像这样的方式来格式化数据,${}
为占位符。
- 可以通过padStart(len, str)与padEnd(len, str)这两个方法来补全字符串,但是要注意只能补全字符串,所以通常需要先通过tostring()方法转化为字符串
- 根据给定长度自动在字符串的前面补充想补充的字符串(只返回修改后的字符串,不修改原字符串)
- len 给定的长度,转换后
- str 想补充的字符串
类似这样:1
var s=dt.getSeconds().toString().padStart(2,'0');
总结
通过定义filter可以很方便的来格式化数据,这里还有一个小细节,就是带s的就是私有的,不带s的就是全局的。