vue - 定义和使用过滤器filter

一、过滤器的介绍

1、在Vue中使用过滤器(Filters)来渲染数据是一种很有趣的方式。

2、首先我们要知道,Vue中的过滤器不能替代Vue中的mehtods、computed、watch

3、过滤器不改变真正的data,而只是改变渲染的结果,并返回过滤后的版本。

4、在很多不同的情况下,过滤器都是有用的,比如尽可能保持API响应的干净,并在前端处理数据的格式。

5、在你希望避免重复和连接的情况下,它们也可以有效地封装成可重用代码块背后的所有逻辑。

6、在Vue 2.0中已经没有内置的过滤器了,我们可以自定义过滤器。

二、定义和使用过滤器

使用Vue,可以有两种不同的方式注册过滤器(全局过滤器和本地过滤器),你可以跨所有组件访问全局过滤器,而本地过滤器只允许你在其定义的组件内部使用。注意:当全局过滤器和局部过滤器重名时,会采用局部过滤器。

【1】全局过滤器

来看一个简单的示例,其作用是将单词第一个字母转成大写字母

    // 声明一个全局的过滤器
    Vue.filter('capitalize', function (value) {
        if (!value) return ''
        value = value.toString()
        return value.charAt(0).toUpperCase() + value.slice(1)
    })

【2】本地过滤器

本地过滤器存储在Vue组件中,作为filters属性中的函数。这个时候你想注册多少个就能注册多少个

filters: {
    capitalize: function (value) {
        if (!value) return ''
        value = value.toString()
        return value.charAt(0).toUpperCase() + value.slice(1)
    }
}

【3】过滤器的使用

过滤器可以用在两个地方:双花括号插值和 v-bind 表达式 (后者从 2.1.0+ 开始支持)。

过滤器函数总接收表达式的值 作为第一个参数。在下述例子中,capitalize过滤器函数将会收到name的值作为第一个参数,formaId过滤器函数将会收到rowId的值作为第一个参数。

<!-- 在双花括号中 -->
<h1>{{ name | capitalize }}</h1>

<!-- 在 `v-bind` 中 -->
<div v-bind:id="rowId | formatId"></div>

 【4】hello通过capitalize过滤器后展示到页面的是Hello

三、过滤器串联

过滤器可以串联,使用管道(|)符号将多个过滤器进行串连,并通过这一系列过滤器转换成一个值。

在下面这个例子中,表达式name的值将作为参数传入到filterA函数中。然后继续调用过滤器函数filterB,将filterA的过滤结果作为参数传递到filterB中,最终得到过滤后的结果展示到h1标签元素

<h1>{{ name | filterA | filterB }}</h1>

让我们再看一个价格的例子,并让这个价格只保留两位小数,然后加上美元符号。

<div id="app">
    <h1>{{ price | toFixed(2) | toUSD}}</h1>
</div>


// 过滤器
filters: {
    toFixed: function (price, limit) {
        return price.toFixed(limit)
    },
    toUSD: function (price) {
        return `$${price}`
    }
}

四、添加参数 

正如前面提到过的,过滤器可以根据你需要添加一些参数进来。Vue将被过滤的值作为第一个参数,后缀作为第二个和第三个参数。

下述例子中,toFixed 被定义为接收两个参数的过滤器函数。其中price的值作为第一个参数,limit作为第二个参数

<div id="app">
    <h1>{{ price | toFixed(2) }}</h1>
</div>


// 过滤器
filters: {
    toFixed: function (price, limit) {
        return price.toFixed(limit)
    },
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Vue过滤器Filter)是用来处理模板的数据的一种方式。它可以在模板对数据进行格式化、排序、过滤等操作,使数据在渲染之前经过一定的处理。 在Vue,你可以通过全局过滤器或局部过滤器使用过滤器。 全局过滤器可以在整个应用使用,而局部过滤器只能在特定的组件使用。 下面是一个使用全局过滤器的示例: ``` // 注册全局过滤器 Vue.filter('capitalize', function(value) { if (!value) return '' value = value.toString() return value.charAt(0).toUpperCase() + value.slice(1) }) // 在模板使用过滤器 <div> {{ message | capitalize }} </div> ``` 在上面的示例,我们注册了一个名为"capitalize"的全局过滤器,它会将传入的字符串首字母大写。然后在模板使用了该过滤器来处理message变量。 除了全局过滤器外,你还可以在组件定义局部过滤器。下面是一个使用局部过滤器的示例: ``` Vue.component('my-component', { // 定义局部过滤器 filters: { lowercase: function(value) { if (!value) return '' return value.toString().toLowerCase() } }, template: ` <div> {{ message | lowercase }} </div> `, data() { return { message: 'Hello World' } } }) ``` 在上面的示例,我们在组件的`filters`选项定义了一个名为"lowercase"的局部过滤器,并在模板使用了该过滤器来处理message变量。 总结起来,Vue过滤器是一种用于对模板的数据进行处理和格式化的机制。你可以使用全局过滤器或局部过滤器定义使用过滤器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@Demi

您的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值