今天是三天連假的第一天,實體上課真的太累了,一不小心睡到下午诶嘿(๑´ڡ`๑)連假過完鐵人也差不多完成了!時間真的過的飛快啊,今天來講講vue的過濾器,雖然在這邊出現順序有點混亂,但沒關係的對吧o(`ω´ )o
Vue的過濾器主要用來格式化數據、文字等資料,像是轉換日期顯示方法、千分號:$1,000、英文大小寫轉換等狀況。
規則:
Vue.filter(dataName, filterFunction){
// 過濾器處理過程
})
dataName
是過濾器的名稱,用|
(pipe)分隔,filterFunction
是過濾器的函式名稱
主要的寫法分為兩種:
{{ dataName | filterFunction }}
<div v-bind:id="dataName | filterFunction"></div>
|
(pipe)串聯多個不同的filter(數量不限)我們可以在一個組件的option中定義本地的過濾器(Local filters的範圍僅在Vue Instance 中)。
這個例子我們在數字前面加上錢錢$符號:
<div id="app">
<p>{{ price | filterDollarSign }}</p>
</div>
<script>
var vm = new Vue({
el: '#app',
data: {
price:123456
},
filters: {
filterDollarSign(price) {
return '$' + price;
}
}
});
</script>
全局過濾器要在創建Vue instance前先定義好,當全域過濾器和區域過濾器名字重複時,會採用局部過濾器歐!
這個例子我們讓名字的字首變成大寫:
<div id="app">
name:<input type="text" v-model="name" />
<div>{{name | upper}}</div>
</div>
<script>
// 定義過濾器
Vue.filter('upper', function (val) {
return val.charAt(0).toUpperCase()+val.slice(1);
})
var vm = new Vue({
el: '#app',
data: {
name: ''
},
});
</script>
用第一個例子來示範,串聯多個filters的時候執行順序是由左到右歐!
我們用filterComma
來將數字變成千分位,加上逗點;用filterDollarSign
在數字前加上錢錢$符號。
<div id="app">
<p>{{ price | filterComma | filterDollarSign }}</p>
</div>
<script>
var vm = new Vue({
el: '#app',
data: {
price:123456
},
filters: {
filterDollarSign(price) {
return '$' + price;
},
filterComma(price) {
return price.toLocaleString('en-US');
}
}
});
</script>
參考資料:
[Vue學習筆記](七)計算屬性、監聽器、過濾器 — computed, watch,filter
用範例理解 Vue.js #7:Filters vs Computed
Vue過濾器