Vue.jsにおけるフィルターの活用方法

  1. フィルターとは何か? ====================

フィルターは、表示前にデータに対して追加の処理を行う仕組みであり、元のデータを変更するのではなく、新しいデータを生成して表示します。

  1. フィルターの利用方法 ==================
<!-- ダブル波括弧内での使用 -->
<div>{{ プロパティ名 | フィルタ名 }}</div>
<div>{{ プロパティ名 | フィルタ名(引数) }}</div>
<!-- `v-bind` 内での使用 -->
<div v-bind:id="プロパティ名 | フィルタ名"></div>
<div v-bind:id="プロパティ名 | フィルタ名(引数)"></div>
  1. Vueのフィルターの種類 ========================

フィルターには2つのタイプがあります。それぞれローカルフィルターとグローバルフィルターです。すべてのフィルターは関数であり、処理対象のデータを引数として受け取ります。

ローカルフィルター:現在のコンポーネントでのみ有効 グローバルフィルター:全コンポーネントで利用可能

1) ローカルフィルター

構文:

new Vue({       
 filters: {      
    'フィルタ名': function (値1[,値2,...] ) { 
       // 処理ロジック     
      } 
         }    
  })    

実装例:

// Vueインスタンスを作成し、ViewModelを得る
            var vm = new Vue({
                el: '#app',
                data: {
                    text: 'かつて、私は純真な少年でした。その純真な私は、誰が世界で最も純真な男かと、愚かに尋ねました'
                },
                methods: {},
                // 現在のVueオブジェクトでのみ使用可能なローカルフィルターを定義
                filters: {
                    formatDate(text) {
                        return text+'YYYYY';
                    }
                }
            });

2) グローバルフィルター

構文:

Vue.filter('フィルタ名', function (値1[,値2,...] ) {  

// 処理ロジック

})

実装例:

<div id="app">
            <p>{{ text | textFormat('激しい','--')}}</p>
        </div>

        <script>
            // 名前が textFormat のグローバルフィルターを定義
            Vue.filter('textFormat', function(text, arg, arg2) {
                // 文字列の replace メソッドでは、第一引数に文字列だけでなく正規表現も指定可能
                return text.replace(/純真/g, arg+arg2)
            })
      </script>

注意点:

1. 同じ名前のフィルターがローカルとグローバルで定義されている場合、より近いスコープのフィルターが優先的に呼び出されます。つまり、ローカルフィルターはグローバルフィルターよりも優先されます。

2. 一つの式に複数のフィルターを適用できます。フィルター間はパイプ記号「|」で区切ります。実行順序は左から右へです。

3. 一つのデータに対して複数のフィルターを適用することが可能です。左から右へ順番に実行され、次のフィルターは前のフィルターの結果を受け取ります。そのため、実行順序には注意が必要です。

以上が個人的な学習まとめです。ご指摘やご意見をお待ちしています。

タグ: vue.js フィルター javascript コンポーネント データ処理

6月11日 17:13 投稿