グローバルスコープにフィルター登録
Vue.filter()メソッドを使ってグローバルスコープに登録すると、全てのコンポーネントから共通で利用できるようになります。
Vue.filter(フィルター名,関数オブジェクト);
テキストバインドの適用
{{プロパティ名 | フィルター名}}
属性バインドの適用
<要素名 v-bind:属性名="プロパティ名 | フィルター名">
テキストバインドの適用
{{プロパティ名 | フィルター名}}
属性バインドの適用
<要素名 v-bind:属性名="プロパティ名 | フィルター名">
フィルター適用
{{price | number_format}}
テキストバインド
<div id="app">
{{price | number_format}}
</div>
グローバルフィルター登録
Vue.filter('number_format', function(val) {
return val.toLocaleString();
});
var app = new Vue({
el: '#app',
data: {
price: 4500
}
});
ローカルスコープにフィルター登録
filtersオプションを使ってコンポーネントの中に登録したフィルターは、その中だけで使えるローカルスコープとなり、他のコンポーネントから隠れる。特定のコンポーネントの中だけで使うフィルターは、なるべくローカルスコープに登録したほうが独立性を保てます。
filters: {フィルター名: 関数オブジェクト}
ローカルフィルター登録
var app = new Vue({
el: '#app',
data: {
price: 4500
},
filters: {
number_format: function(val) {
return val.toLocaleString();
}
}
});
複数のフィルターを連結
2つ以上のフィルター名を「|」でつなぐと、 フィルターが連鎖的に適用されます
テキストに複数バインド
{{プロパティ名 | フィルター名 | フィルター名}}
属性にに複数バインド
<要素名 v-bind:属性名="プロパティ名 | フィルター名 | フィルター名">
{{プロパティ名 | フィルター名 | フィルター名}}
属性にに複数バインド
<要素名 v-bind:属性名="プロパティ名 | フィルター名 | フィルター名">
フィルターの組み合わせ
{{price | unit}} {{price | number_format | unit}}
複数バインド
<div id="app2">
{{price | unit}} {{price | number_format | unit}}
</div>
複数フィルター
var app2 = new Vue({
el: '#app2',
data: {
price: 12500
},
filters: {
number_format: function(val) {
return val.toLocaleString();
},
unit: function(val) {
return val + '円';
}
}
});