# Vue中filters過濾器怎么使用
## 一、什么是Vue過濾器
Vue.js中的過濾器(Filters)是用于格式化文本的特殊函數,可以用在**雙花括號插值**和**v-bind表達式**中。過濾器通過管道符(|)調用,主要作用是對原始數據進行二次處理并返回格式化后的結果。
```javascript
<!-- 基本語法 -->
{{ message | filterName }}
<!-- 鏈式調用 -->
{{ message | filterA | filterB }}
通過Vue.filter()
方法注冊全局過濾器,所有組件都可以使用:
Vue.filter('capitalize', function(value) {
if (!value) return ''
return value.toString().charAt(0).toUpperCase() + value.slice(1)
})
在組件選項中通過filters
屬性注冊:
export default {
filters: {
truncate(value, length = 10) {
return value.length > length
? value.substring(0, length) + '...'
: value
}
}
}
<p>{{ user.name | capitalize }}</p>
<div :title="rawTitle | truncate(5)"></div>
{{ date | formatDate | parseTime }}
過濾器可以接收額外參數:
Vue.filter('currency', function(value, symbol = '¥') {
return symbol + value.toFixed(2)
})
使用方式:
<p>{{ price | currency('$') }}</p>
// 手機號脫敏處理
filters: {
hidePhone(val) {
return val.replace(/^(\d{3})\d{4}(\d+)/, '$1****$2')
}
}
推薦使用第三方庫如dayjs
:
import dayjs from 'dayjs'
filters: {
formatDate(val, format = 'YYYY-MM-DD') {
return dayjs(val).format(format)
}
}
// 千分位分隔
filters: {
thousandSeparator(val) {
return val.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',')
}
}
在Vue 3中可以通過以下方式替代過濾器:
// 使用computed
computed: {
formattedDate() {
return dayjs(this.date).format('YYYY-MM-DD')
}
}
// 使用方法
methods: {
currency(value) {
return '¥' + value.toFixed(2)
}
}
Vue過濾器提供了一種便捷的文本格式化方案,適合處理簡單的數據轉換。雖然Vue 3已移除該特性,但在Vue 2項目中仍廣泛使用。開發者應根據項目需求選擇合適的數據處理方式,對于復雜邏輯建議優先使用計算屬性。
提示:在大型項目中,可將常用過濾器提取為獨立模塊,通過
import
引入保持代碼整潔。 “`
(全文約900字)
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。