數字加上千分位分隔符一般用于貨幣、賬戶余額等數字的展示。Vue提供了一個過濾器可以簡便地實現數字加逗號的顯示。
Vue.filter('commafy',function(num){ if(num){ var parts=num.toString().split("."); parts[0]=parts[0].replace(/(\d)(?=(\d{3})+$)/g,'$1,'); return parts.join("."); } return num; });
上述代碼實現了一個名為"commafy"的過濾器,接受一個數字參數并返回加上逗號的字符串。使用過濾器非常簡單,只需在模板中調用即可。
{{ amount | commafy }}
上述代碼會將amount變量的值以逗號為分隔符顯示在頁面上。
如果不想在模板中重復使用過濾器,還可以將其定義為全局過濾器。
Vue.filter('commafy',function(num){ // filter logic });
在Vue實例中,可以通過$options.filters訪問所有已定義的過濾器.
var vm=new Vue({ el:'#app', data:{ amount:10000000 } }); console.log(vm.$options.filters.commafy(vm.amount));//"10,000,000"
除了Vue內置的過濾器外,還可以使用第三方庫來實現數字的格式化。比如說,numeral.js是一個輕量級的庫,具有強大的數字格式化功能。
import numeral from "numeral"; Vue.filter("formatCurrency",function(value){ return numeral(value).format("$0,0.00"); });
上述代碼定義了一個名為"formatCurrency"的過濾器,接受一個數字參數并使用numeral庫將其轉換成貨幣格式并返回。在模板中使用該過濾器的語法與上述類似。
{{ amount | formatCurrency }}
總的來說,在Vue中實現數字加逗號的方法有很多種。盡管Vue內置的過濾器已經能夠滿足大多數需求,但有時第三方的庫可能會更加強大,更加靈活,因此可以根據具體場景選擇最合適的方法。