Vue.js 允許你自定義過濾器鳖粟,可被用于一些常見的文本格式化伪阶。過濾器可以用在兩個地方:雙花括號插值和?v-bind?表達(dá)式?(后者從 2.1.0+ 開始支持)。過濾器應(yīng)該被添加在 JavaScript 表達(dá)式的尾部扭屁,由“管道”符號指示:(Vue.js官網(wǎng))
下面用一個時間格式做個例子:
msg : new Date()
//需要過濾的數(shù)據(jù)
{{ msg | timeFormat}}
//定義全局的過濾器
//.toString().padStart(2,'0') 時間格式補(bǔ)齊
Vue.filter('timeFormat', function (dateStr, pattern = ' ') {
? ? ? ? var dt = new Date(dateStr);
? ? ? ? var y = dt.getFullYear();
? ? ? ? var m = (dt.getMonth() + 1).toString().padStart(2, '0');
? ? ? ? var d = (dt.getDay()).toString().padStart(2, '0');
? ? ? ? if (pattern && pattern.toLowerCase() == 'yyyy-mm-dd') {
? ? ? ? ? ? return `${y}-${m}-$7flrf1z`;
? ? ? ? } else {
? ? ? ? ? ? var hh = (dt.getHours()).toString().padStart(2, '0')
? ? ? ? ? ? var mm = (dt.getMinutes()).toString().padStart(2, '0')
? ? ? ? ? ? var ss = (dt.getSeconds()).toString().padStart(2, '0')
? ? ? ? ? ? return `${y}-${m}-$tj3dpld ${hh}:${mm}:${ss}`
? ? ? ? }
? ? })
上面是定義全局的過濾器堪旧,下面的話定義一個私有過濾器:
//需要過濾的數(shù)據(jù)
{{ msg | timeFormat}}
//定義私有過濾器
var vm= new Vue({
el:'#app',
data:{
msg : new Date()
},
methods:{
},
filters:{
dtFormate(dateStr, pattern = ' ') {
? ? ? ? ? ? ? ? var time = new Date(dateStr)
? ? ? ? ? ? ? ? var y = time.getFullYear();
? ? ? ? ? ? ? ? var m = time.getMonth() + 1;
? ? ? ? ? ? ? ? var d = time.getDay();
? ? ? ? ? ? ? ? if (pattern.toLowerCase() == 'yyyy-mm-dd') {
? ? ? ? ? ? ? ? ? ? return `${y}-${m}-$vjr9ztn`
? ? ? ? ? ? ? ? } else {
? ? ? ? ? ? ? ? ? ? var hh = time.getHours()
? ? ? ? ? ? ? ? ? ? var mm = time.getMinutes()
? ? ? ? ? ? ? ? ? ? var ss = time.getSeconds()
? ? ? ? ? ? ? ? ? ? return `${y}-${m}-$ppzfbnh ${hh}:${mm}:${ss}`
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
}
})
以上兩個例子的第二個參數(shù):??pattern = ' ',是為了輸出格式做修改才睹,方便用戶需求徘跪。
過濾器可以串聯(lián):(Vue.js官網(wǎng))
{{ message | filterA | filterB }}