【Vue.js】filterを使ってHTML側で色々な処理を行いたい
フィルタとは、文字数を丸めたり数字にカンマを入れるといったテキストベースの変換処理に特化した機能です。フィルタはローカルまたはグローバルに登録して使用しますが、注意点としてローカルに登録した場合でもthisへのアクセスはできません。
引用元:基礎から学ぶ Vue.js
filterは以下のようにHTML側で対象のdataにセットすることができます。
{{ 対象のデータ | filterの名前 }} <!-- もしくは --> <div v-bind:id="対象のデータ | filterの名前"></div>
filterで1000桁ごとにカンマをつけたい
filterで1000桁ごとにカンマをつけたいという場合には以下のようにfiliterを設定することができます。
See the Pen
filterで1000桁ごとにカンマをつける by りっしー (@hiwriterprogram)
on CodePen.
filtersで使用されているtoLocaleString()はJSのメソッド。こちらでJSのメソッドを使用して色々な処理をすることができるはずです。
グローバルfiliterを設定する
以下は、先ほどと結果が同じですがfilter自体はVue.filterとしてグローバルで登録しています。これで全てのnew Vueによって生成されたインスタンスでlocaleNumフィルターを使用することができます。
See the Pen
グローバルfilters by りっしー (@hiwriterprogram)
on CodePen.
filterは複数を繋げられる
See the Pen
GVjOPg by りっしー (@hiwriterprogram)
on CodePen.
上記の例のようにfilterは幾つでも繋げることができます。複雑なfilterにするなら役割を分けて設定する方が見通しが良くなるでしょう。
流れとしては、
- 1つ目のfilterが結果を出す
- 2つ目のfilterが1つ目のfilterの結果を引数にして結果を出す
- filterがある分だけ繰り返し…
ということになります。
他にも1つのfilterに複数の引数を持たせることも可能です。