Vue2中的過濾器filter使用及註意說明
Vue2中的過濾器是什麼
什麼是vue的過濾器
過濾器可以通俗理解成是一個特殊的方法,用來加工數據的
比如枚舉值可以使用過濾器:如 1 2 3 4 對應 成功 失敗 進行中 已退回 比如價格後面跟個過濾器,將價格格式化成小數點兩位 比如時間格式化等,又比如可以過濾聊天中的某些臟話
過濾器怎麼寫
<div id="app"> <h3>過濾器基本使用</h3> // <!--在雙花括號中使用全局過濾器 格式:{{值 | 過濾器的名稱}}--> <p> {{content|contentFilter}} </p> // <!--在v-bind中使用全局過濾器 格式:v-bind:id="值 | 過濾器的名稱"--> <p v-bind:id="1 | addZero">11</p> <h3>過濾器接收參數</h3> <p> {{ num1| add(num2,num3)}} </p> </div>
Vue.filter('contentFilter', function (value) { //全局過濾器 if (!value) { return "" } return value.toUpperCase().replace('TMD', '*不許說臟話噢*').replace('SB', '*不許說臟話噢*') }) Vue.filter("addZero",function(value){ // 如果value的值小於10則在前面添加0然後返回,否則直接返回value值 return value<10?"0"+value:value; }); new Vue({ el: '#app', data: { content: '小夥子,TMD就是個sb', num1: 40, num2: 60, num3: 70, }, filters: { //局部過濾器(本地過濾器) add(n1, n2, n3) { return n1 + n2 + n3 } } })
註意:當全局過濾器和局部過濾器重名時,會采用局部過濾器
局部過濾器優先於全局過濾器被調用
一個表達式可以使用多個過濾器。過濾器之間需要用管道符“|”隔開。其執行順序從左往右
註意filter方法在vue3中已被廢除
vue3要精簡代碼,並且filter功能重復,filter能實現的功能,methods和計算屬性基本上也可以實現。把filter這方面的vue源碼給刪掉,這樣更加方便維護。
例如
使用computed實現
<template> <div id="app"> <ul v-for="(item, index) in arr" :key="index"> <li>快遞公司:{{ item.deliverCompany }}</li> <!-- 使用計算屬性 --> <li>運輸狀態:{{ computedText(item.expressState) }}</li> </ul> </div> </template> <script> export default { data() { return { arr: [ { deliverCompany: "京東快遞", expressState: "1", }, { deliverCompany: "順豐快遞", expressState: "2", }, { deliverCompany: "中通快遞", expressState: "3", }, { deliverCompany: "郵政快遞", expressState: "4", }, { deliverCompany: "極兔快遞", expressState: "5", }, { deliverCompany: "某某快遞", expressState: null, }, ], }; }, computed: { computedText() { // 計算屬性要return一個函數接收參數 return function (state) { switch (state) { case "1": return "待發貨"; break; case "2": return "已發貨"; break; case "3": return "運輸中"; break; case "4": return "派件中"; break; case "5": return "已收貨"; break; default: return "快遞信息丟失"; break; } }; }, }, }; </script>
使用methods實現
<template> <div id="app"> <ul v-for="(item, index) in arr" :key="index"> <li>快遞公司:{{ item.deliverCompany }}</li> <!-- 使用方法 --> <li>運輸狀態:{{ methodsText(item.expressState) }}</li> </ul> </div> </template> <script> export default { data() { return { arr: [ { deliverCompany: "京東快遞", expressState: "1", }, { deliverCompany: "順豐快遞", expressState: "2", }, { deliverCompany: "中通快遞", expressState: "3", }, { deliverCompany: "郵政快遞", expressState: "4", }, { deliverCompany: "極兔快遞", expressState: "5", }, { deliverCompany: "某某快遞", expressState: null, }, ], }; }, methods: { methodsText(state) { switch (state) { case "1": return "待發貨"; break; case "2": return "已發貨"; break; case "3": return "運輸中"; break; case "4": return "派件中"; break; case "5": return "已收貨"; break; default: return "快遞信息丟失"; break; } }, }, }; </script>
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。