Vueコンポーネントで通貨をフォーマットするにはどうすればよいですか?
私のVueコンポーネントはこのようなものです:
<template>
<div>
<div class="panel-group"v-for="item in list">
<div class="col-md-8">
<small>
Total: <b>{{ item.total }}</b>
</small>
</div>
</div>
</div>
</template>
<script>
export default {
...
computed: {
list: function() {
return this.$store.state.transaction.list
},
...
}
}
</script>
item.total }}` の結果は以下の通りです。
26000000
しかし、私はこれを次のようにフォーマットしたいのです:
26.000.000,00
jqueryやjavascriptで、以下のようなことができます。
でも、vueのコンポーネントではどうすればいいのでしょうか?
59
7
フィルターを作成しました。 フィルターはどのページでも使用できます。
{
次に、このフィルターを次のように使用できます。
{
私はこれらの関連する回答を使用して、フィルターの実装を支援しました。
-https://stackoverflow.com/questions/149055/how-can-i-format-numbers-as-dollars-currency-string-in-javascript。 -https://stackoverflow.com/questions/1303646/check-whicher-variable-is-number-or-string-in-javascript。
そのためのメソッドを書いて、価格をフォーマットする必要があるところでは、テンプレートにメソッドを入れて、値を下に渡すだけです。
そして、テンプレートに
ちなみに、置換と正規表現については、あまり気を使っていませんので、改善されるかもしれません。
vuejs 2を使用すると、他の利点があるvue2フィルターを使用することもできます。
{
次に、そのように使用します。
{
参照:https://www.npmjs.com/package/vue2-filters。
独自のコードを作成して通貨をフォーマットできますが、それは今のところ単なる解決策です。アプリが成長するときに、他の通貨が必要になる場合があります。
これには別の問題があります。
1。 EN-usの場合-dolar記号は常に通貨の前にあります-$ 2.00、。 2。 選択したPLの場合、2,00złのような金額でサインを返します。
最良のオプションは、国際化のために複雑なソリューションを使用することだと思います。 ライブラリvue-i18n(。 http://kazupon.github.io/vue-i18n/)。。
私はこのプラグインを使用しており、そのようなことを心配する必要はありません。 ドキュメントを見てください-それは本当に簡単です:
http://kazupon.github.io/vue-i18n/guide/number.html。
だからあなたはただ使う:
{
EN-usを設定して $ 100.00 :を取得します。
{
またはPLを設定して 100,00złを取得します。
{
このプラグインは、翻訳や日付フォーマットなどのさまざまな機能も提供します。
RoyJのコメントには、素晴らしい提案があります。テンプレートでは、ローカライズされた組み込みの文字列を使用すればよいのです:
古いブラウザではサポートされていないものもありますが、IE11以降をターゲットにしているのであれば、問題ないでしょう。
@Jessが提案するカスタムフィルターソリューションを使用しましたが、私のプロジェクトでは、VueをTypeScriptと一緒に使用しています。 これは、TypeScriptとクラスデコレーターの場合の外観です。
合格答案の精度に問題がある。
*このテストでは round(value, decimals) 関数が動作します。 単純なtoFixedの例とは異なります。
これは、toFixedとroundメソッドのテストです。
http://www.jacklmoore.com/notes/rounding-in-javascript/