Nuxt2では、フィルタを定義することにより、数値等を定義したフォーマットで表示することが出来ました。
plugins/filter.js
import Vue from 'vue'
Vue.filter('currencyJPY', (value) => `¥${value.toLocaleString()`)
<template>
<h1>Bank Account Balance</h1>
<p>{{ accountBalance | currencyJPY }}</p>
</template>
マスタッシュ構文の中で「 number | currencyJPY 」と記述するだけで、数値を「¥1,000」と表示することが出来、非常に便利でした。
あいにくNuxt3には、この機能が用意されていませんので、なんとか使い勝手の似た方法は無いかと探してみたところ、こんな方法にたどり着きました。
plugins/filter.ts
export default defineNuxtPlugin((nuxtApp) => {
nuxtApp.vueApp.config.globalProperties.$filters = {
currencyJPY: (value: number) => `¥${value.toLocaleString()}`,
}
})
<template>
<h1>Bank Account Balance</h1>
<p>{{ $filters.currencyJPY(accountBalance) }}</p>
</template>
ようは、グローバルに使えるフィルタ関数を追加したというだけなのですが…
うん、こんなことしなくても、コンポーザブルでいいわ、やっぱり
composables/useFilter.ts
export const useFilterCurrencyJPY = (value: number) => `¥${value.toLocaleString()}`
<template>
<h1>Bank Account Balance</h1>
<p>{{ useFilterCurrencyJPY(accountBalance) }}</p>
</template>
ホームページの制作(デザイン・コーディング・プログラミング)に加え、ネットショップの販売促進に関するアドバイスも致します。 20年以上に渡って実際にネットショップを運営した経験を生かし、聞きかじりではない実績を伴ったノウハウを、自分の言葉でお伝えいたします。 プログラミングの経験は30年以上。HTML、CSS、JavaScript、TypeScript、Vue、NuxtJS、Node.js、MySQL、MongoDB、Elasticsearch、WordPress、PHP、Docker、Electronなど、幅広く対応します。
コメント