vue 2.0 过滤器
在vue1.0中,我们见到过很多的内置过滤器,如 filterBy、orderBy等等,但是在vue 2.0中,这些内置过滤器已经全部舍弃掉。
在vue2.0中,我们想使用过滤器的话,就需要自己动手写一个自定义过滤器,具体怎么搭建,下面就来说一说,不过在这之前,我们先来了解下,过滤器的作用和本质是什么。
作用 : 对数据进行筛选、过滤、格式化等处理
本质 : 一个带有参数和返回值的方法
通过上面,我们不难看出,过滤器其实是一个方法。那么,这个方法是什么样子的呢?我们该怎么去写这个方法?
在vue 2.0中,已经给出了我们这个书写格式
首先是使用方法
<!-- 在双花括号中 -->
{{ message | capitalize }}
<!-- 在 ' v-bind ' 中 -->
<div v-bind:id="rawId | formatId"></div>
在一个组件的选项中定义本地的过滤器
filters : {
capitalize : function (value) {
if ( !value ) return ' '
value = value.toString()
return value.charAt(0).toUpperCase() + value.slice(1)
}
在创建 Vue 实例之前全局定义过滤器
Vue.filter('capitalize', function (value) {
if (!value) return ''
value = value.toString()
return value.charAt(0).toUpperCase() + value.slice(1)
})
new Vue ({
// ...
})
使用
{{ message | capitalize }}
过滤器函数总接收表达式的值 (之前的操作链的结果) 作为第一个参数。在上述例子中,capitalize 过滤器函数将会收到 message 的值作为第一个参数。
过滤器可以串联:
{{ message | filterA | filterB }}
在这个例子中,filterA 被定义为接收单个参数的过滤器函数,表达式 message 的值将作为参数传入到函数中。然后继续调用同样被定义为接收单个参数的过滤器函数 filterB,将 filterA 的结果传递到 filterB 中。
过滤器是 JavaScript 函数,因此可以接收参数:
{{ message | filterA('arg1', arg2) }}
这里,filterA 被定义为接收三个参数的过滤器函数。其中 message 的值作为第一个参数,普通字符串 'arg1' 作为第二个参数,表达式 arg2 的值作为第三个参数。