過濾器
過濾器
1、過濾器規則
Vue.js 允許你自定義過濾器,可被用於一些常見的文本格式化。過濾器可以用在兩個地方:
雙花括號插值和 v-bind 表達式 (后者從 2.1.0+ 開始支持)。過濾器應該被添加在 JavaScript 表達式的尾部,由“管道”符號指示:
<!-- 在雙花括號中 --> {{ message | capitalize }} <!-- 在 `v-bind` 中 --> <div v-bind:id="rawId | formatId"></div>
你可以在一個組件的選項中定義本地的過濾器:
filters: { capitalize: function (value) { if (!value) return '' value = value.toString() return value.charAt(0).toUpperCase() + value.slice(1) } }
或者在創建 Vue 實例之前全局定義過濾器:
Vue.filter('capitalize', function (value) {
if (!value) return ''
value = value.toString()
return value.charAt(0).toUpperCase() + value.slice(1)
})
new Vue({
// ...
})
下面這個例子用到了 capitalize 過濾器:發現首字母大寫

capitalize 過濾器函數將會收到 message 的值作為第一個參數。
2、過濾器可以串聯:
{{ message | filterA | filterB }}
這就相當於:
第一步:先把message放到filterA過濾器中進行過濾
第二步:將第一步過濾器的結果再放到filterB再進行過濾,顯示最終過濾結果。
3、過濾器是 JavaScript 函數,因此可以接收參數:
{{ message | filterA('arg1', arg2) }}
這里,filterA 被定義為接收三個參數的過濾器函數。其中 message 的值作為第一個參數,普通字符串 'arg1' 作為第二個參數,表達式 arg2 的值作為第三個參數。
小案例
<script src="https://unpkg.com/vue/dist/vue.js"></script> <div id="app"> <span>SearchByName: </span> <input v-model="searchQuery"> <table> <thead> <tr> <td v-for="col in columns">{{col|capitalize}}</td> </tr> </thead> <tbody> <tr v-for="entry in filteredData"> <td v-for="col in columns">{{entry[col]}}</td> </tr> </tbody> </table> </div> <script> new Vue({ el: '#app', data: { searchQuery: '', columns: ['name', 'gender', 'age'], data: [{ name: 'Jack', gender: 'male', age: 26 }, { name: 'John', gender: 'female', age: 20 }, { name: 'Lucy', gender: 'female', age: 16 }] }, filters: { capitalize: function(value) { return value.charAt(0).toUpperCase() + value.slice(1); } }, computed: { filteredData: function() { var self = this;
//filter是Javascript帶的方法,
// 前面調用的是需要使用filter的數組類型,而給filter函數傳入的是數組中的每個item,也就是說filter里面的函數,是每個item要去做的,並將每個結果返回。
return this.data.filter(function(item) { return item.name.toLowerCase().indexOf(self.searchQuery.toLowerCase()) !== -1; }) } } }); </script>
效果:

使用js中的迭代函數filter :

其他的一些Js 迭代方法——filter()、map()、some()、every()、forEach()、lastIndexOf()、indexOf()
參考:
想太多,做太少,中間的落差就是煩惱。想沒有煩惱,要么別想,要么多做。上尉【2】
