Vue中filter函数 过滤器的使用

本文详细介绍了Vue.js中的过滤器,包括局部过滤器和全局过滤器的定义与使用方法。过滤器用于数据格式化,不会改变原始数据。局部过滤器仅在当前组件内生效,而全局过滤器可在所有组件中使用。通过管道符`|`调用过滤器,例如`{{ price | filterName }

目录

filters是什么?

filters分为两类

一:局部过滤器

二:全局过滤器

特别注意


filters是什么?

filters顾名思义是一个过滤器,就是对数据进行过滤筛选,将数据转化为我们想要的格式,但是他不会改变原始数据。


filters分为两类

一:局部过滤器

局部过滤器的特点:只能作用于本组件没内

定义局部过滤器:在本组件内直接定义即可(代码如下:)

<script>
 export default {
   
    // 定义局部过滤器

    // filtersMoney ===> 定义局部过滤器的函数名(可自定义)

    // val ===> 我们要修改/转化的数据

    filters: {
        filtersMoney(val){
          return "¥"+val.toFixed(2)
        }
    },
   
  }
</script>

定义完之后直接通过 管道符  |  调用即可(代码如下:)

<div> {{price | filtersMoney}} </div>

<!-- 管道符 前面的 price ===> 我们要修改/转化的数据 --> 

<!-- 管道符 后面的 filtersMoney ===> 我们定义的局部过滤函数 -->

二:全局过滤器

全局过滤器的特点:可以作用于全部组件中

定义全局过滤器:在main.js 文件里面进行定义 (代码如下:)

import Vue from 'vue'
import App from './App.vue'
import router from './router'

Vue.config.productionTip = false

// 定义全局过滤器

// filterMoney ===> 定义全局过滤器的函数名(可自定义)

// val ===> 我们要修改/转化的数据

Vue.filter('filterMoney', function(val) {
    return "¥" + (val * 1).toFixed(2);
})


new Vue({
    router,
    render: h => h(App)
}).$mount('#app')

定义完之后直接在需要的文件里面通过 管道符 | 进行调用即可(代码如下:)

<div> {{price | filterMoney}} </div>

<!-- 管道符 前面的 price ===> 我们要修改/转化的数据 -->

<!-- 管道符 后面的 filterMoney ===> 我们定义的全局过滤函数 -->

特别注意

一:定义局部过滤器 使用 filters 属性 该属性是一个对象,可以在其中定义多个过滤器函数

二:定义全局过滤器 使用 filter 属性 当然 在 main.js 文件中可以定义多个全局过滤器函数

三:当局部过滤器和全局过滤器 的函数名相同时 此时调用的过滤器将是局部过滤器函数

:当出现父子组件时,父组件 和 全局中 分别定义了相同名称的过滤器,此时子组件中调用的过滤器将是全局过滤器函数

( 建议:定义 局部过滤器 和 全局过滤器 时函数名尽量区别开来,减少不必要的麻烦 )


此案例是 转化价钱格式 例如: 将 90.2 / 1  格式 转化为 ¥90.20  / ¥1.00 格式

<think>好的,用户想了解如何在Vue使用filter函数。首先,我需要回顾一下Vuefilter的基本用法。记得在Vue 2中,过滤器可以用在双花括号插值和v-bind表达式中,通过管道符“|”来调用。比如{{ message | capitalize }},这样message的值会被capitalize过滤器处理。 不过用户提到的是Vue 3,因为他们在参考引用里提到了Vue 3使用filter方法通过id删除数组中的对象。Vue 3中过滤器已经被移除了,官方推荐使用计算属性或者方法代替。这时候需要明确告诉用户版本差异,避免混淆。 接下来需要说明两种版本的用法差异。对于Vue 2,可以定义全局过滤器或者局部过滤器。全局的通过Vue.filter()注册,局部的则在组件选项里定义filters对象。例如,一个日期格式化的过滤器,展示如何转换日期格式。 然后,在Vue 3中,由于不再支持过滤器,应该用计算属性或者方法来实现类似功能。比如用计算属性过滤数组,或者定义一个方法在模板中调用。需要给出具体的示例代码,比如使用计算属性filteredList来过滤可见的项,并在模板中用v-for渲染。 另外,用户提供的引用中有提到使用filter方法删除数组中的对象,这可能是在方法中使用数组的filter方法,而不是Vue过滤器功能。需要区分这两者的不同,避免用户误解。例如,在方法里调用this.items.filter(...)来生成新数组,再赋值给数据属性。 还要注意语法和最佳实践。比如在Vue 2中使用过滤器时的参数传递,多个过滤器串联,以及局部和全局的定义方式。而在Vue 3中,强调使用计算属性提升性能,因为计算属性会缓存结果,避免重复计算。 可能用户会混淆JavaScript的数组filter方法和Vue过滤器概念,需要明确说明两者的不同应用场景。JavaScriptfilter是数组方法,用于数据操作,而Vue过滤器是用于模板中的文本格式化,不过后者在Vue 3已废弃。 最后,总结建议,根据使用Vue版本选择合适的方法,并强调Vue 3中的替代方案,确保用户能正确应用。同时,准备好相关问题,帮助用户深入理解,比如版本差异、性能优化等。</think>在Vue使用过滤器(filter)主要分为全局注册和局部注册两种方式,以下是具体用法及注意事项(以Vue 2为例,Vue 3已废弃过滤器功能): ### 一、基础语法 1. **全局过滤器** ```javascript Vue.filter('currencyFormat', function(value) { return '¥' + Number(value).toFixed(2); }); ``` 使用示例: ```html <span>{{ price | currencyFormat }}</span> ``` 2. **局部过滤器** ```javascript new Vue({ filters: { dateFormat: function(value) { return moment(value).format('YYYY-MM-DD'); } } }) ``` ### 二、进阶用法 1. **链式调用** ```html {{ message | filterA | filterB }} ``` 2. **参数传递** ```html {{ article.content | truncate(50, '...') }} ``` 对应过滤器定义: ```javascript Vue.filter('truncate', (text, length, suffix) => { return text.substring(0, length) + suffix; }); ``` ### 三、Vue 3替代方案 在Vue 3中建议使用计算属性实现过滤功能: ```javascript computed: { filteredItems() { return this.items.filter(item => item.isActive); } } ``` 模板中使用: ```html <div v-for="item in filteredItems" :key="item.id"> {{ item.name }} </div> ``` ### 四、性能注意 当处理大型数据集时,建议: - 使用`v-if`与过滤器组合控制渲染 - 对过滤结果进行缓存 - 避免在过滤器中执行复杂计算 > 引用示例中展示的数组过滤属于JavaScript原生方法`Array.prototype.filter`的应用,与Vue过滤器是不同的概念[^1][^2]
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

热乎劲的小仓库

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

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

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

打赏作者

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

抵扣说明:

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

余额充值