vue过滤器 Vue.filter() filters
作用:过滤数据
语法:
全局:
Vue.filter("过滤器名",(参数一,参数二)=>{});
参数一:需要过滤的数据
参数二:传递的数据
局部:
filters:{
过滤器名(){
}
}
使用:{{username|过滤器名()}}
全局过滤器:
1、定义过滤器(npm i moment)
import moment from 'moment' Vue.filter('format',(value, formatter) => { return moment(value).format(formatter) })
2、使用过滤器
data() { return { time: new Date().getTime() } }
<p>格式化时间:{{time|format('YYYY-MM-DD')}}</p>
局部过滤器:
1、定义过滤器
filters: { imgReplace(data, wh) { return data.replace(/w\.h/, wh) // 将字符串 "w.h" 替换为 "170.280" }, currency: (value) => `¥${value.toFixed(2)}元` }
2、使用过滤器
data() { return { imgUrl: 'http://p0.meituan.net/w.h/movie/2c24eb6a84a92b9ba837967851bec9462844109.jpg', price: 100 } }
<img :src="imgUrl|imgReplace('170.280')" alt=""> <p>货币:{{price|currency}}</p>
效果:
使用过滤器做数据优化:
1、mock数据:(src/data/order.js)
export default [ // 1 待付款 2 待发货 3 待收货 4 待评价 { orderId: 1, name: '商品1', price: 100, status: 1 }, { orderId: 2, name: '商品2', price: 500, status: 2 }, { orderId: 3, name: '商品3', price: 700, status: 3 }, { orderId: 4, name: '商品4', price: 1000, status: 4 } ]
2、定义处理数据过滤器和处理样式过滤器(src/filters/order.js)
export default { setOrderStatus(value) { // 1 -> 待付款 2 -> 待发货 3 -> 待收货 4 -> 待评价 switch (value) { case 1: return '待付款' case 2: return '待发货' case 3: return '待收货' case 4: return '待评价' default: return '未获取到状态' } }, setStatusStyle(value) { switch (value) { case '待付款': return 'not-pay' case '待发货': return 'not-send' case '待收货': return 'not-receive' case '待评价': return 'not-comment' default: return '' } } }
3、使用过滤器
<template> <div id="app"> <table border="1"> <tr v-for="(item, index) in orderData" :key="index"> <td>{{ item.orderId }}</td> <td>{{ item.name }}</td> <td>{{ item.price }}</td> <td :class="item.status | setOrderStatus | setStatusStyle"> {{ item.status | setOrderStatus }} </td> </tr> </table> </div> </template> <script> import orderData from './data/order' import orderFilter from './filters/order' export default { data() { return { orderData } }, filters: orderFilter } </script> <style lang="less" scoped> table { width: 800px; margin: 50px auto; border-collapse: collapse; text-align: center; } .not-pay { color: red; } .not-send { color: blue; } .not-receive { color: orange; } .not-comment { color: green; } </style>
过滤器的作用和computed类似,都是做数据优化的,数据优化也可以在methods中获取到数据时进行优化处理,具体使用哪一种方法看情况。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· 地球OL攻略 —— 某应届生求职总结