JS

vue 2.0 过滤器

2018-06-14  本文已影响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 的值作为第三个参数。

上一篇下一篇

猜你喜欢

热点阅读