vue 内置过滤器的使用总结(附加自定义过滤器)

2020-06-14 05:59:32易采站长站整理

前言

vue中过滤器filters的作用是什么?

过滤器是一个通过输入数据,能够及时对数据进行处理并返回一个数据结果的简单函数。Vue有很多很便利的过滤器,可以参考官方文档。

能够帮我们处理快速一些数据的格式—-format数据格式化处理。

语法也很简单


{{ message | Filter }}

message: 要格式化的数据
Filter: 对数据格式化的方法

链式过滤

VueJs允许你链式调用过滤器,简单的来说,就是一个过滤器的输出成为下一个过滤器的输入,然后再次过滤。接下来,我们可以想象一个比较简答的例子,使用了Vue的 filterBy + orderBy 过滤器来过滤所有商品products。过滤出来的产品是属于电器类商品,并且按电器字母排序。

filterBy过滤器 : 过滤器的值必须是一个数组,filterBy + 过滤条件。过滤条件是:‘string || function’ + in ‘optionKeyName’

orderBy过滤器 : 过滤器的值必须是一个数组,orderBy + 过滤条件。过滤条件是:‘string || array ||function’ + ‘order ≥ 0 为升序 || order < 0 为降序’

接下来,我们可以看下第二个例子:我们有一个商品数组products,我们希望遍历这个数组,并把他们打印成一张清单,这个用v-for很容易实现。


<li v-for="product in products">
{{ product.name | capitalize }} - {{ product.price | currency }}
</li>

capitalize过滤器 : 将输入的字符串首字母转换成大写字母的过滤器。currency过滤器 : 将输入的数字转换成现金的过滤器。可以跟上货币符号(默认$)和保留的小数位(默认2)。

利用上面的两个过滤器,能够很好的把一个json数组的商品清单格式化成通熟易懂的商品价格清单。

如果只想要电器类商品,可以在v-for上加过滤条件:


<li v-for="product in products | filterBy 'electronics' in 'category' ">
{{ product.name | capitalize }} - {{ product.price | currency }}
</li>

上面的例子,就是用filterBy 过滤在 ‘category’中含有’electronics’ 关键字的列表,返回的列表就是只含有 ‘electronics’ 关键字的列表。

如果想要多个搜索条件:


<li v-for="product in products | filterBy 'electronics' in 'category' 'name' ">
{{ product.name | capitalize }} - {{ product.price | currency }}
</li>

上面的例子,就是用filterBy 过滤在 ‘category’ 和 ‘name’ 中含有’electronics’ 关键字的列表。