Vue.js 過濾器的基本使用(filter)
vue中的過濾器分為兩種:局部過濾器和全局過濾器
1、定義無參全局過濾器
Vue.filter('msgFormat', function(msg) { // msg 為固定的參數 即是你需要過濾的數據 return msg.replace(/單純/g, 'xxx') })
完整示例
<div id="app"> <p>{{ msg | msgFormat}}</p> </div> <script> // 定義一個 Vue 全局的過濾器,名字叫做 msgFormat Vue.filter('msgFormat', function(msg) { // 字符串的 replace 方法,第一個參數,除了可寫一個 字符串之外,還可以定義一個正則 return msg.replace(/單純/g, 'xx') }) </script>
2、定義有參全局過濾器
<div id="app"> <p>{{ msg | msgFormat('瘋狂','--')}}</p> </div> <script> // 定義一個 Vue 全局的過濾器,名字叫做 msgFormat Vue.filter('msgFormat', function(msg, arg, arg2) { // 字符串的 replace 方法,第一個參數,除了可寫一個 字符串之外,還可以定義一個正則 return msg.replace(/單純/g, arg+arg2) }) </script>
3、局部過濾器
局部過濾器的有參和無參的定義和使用方法與全局的過濾器一樣。唯一的區別在於局部過濾器是定義在vue的實例中。其作用的區域也是vue實例【#app】控制的區域
// 創建 Vue 實例,得到 ViewModel var vm = new Vue({ el: '#app', data: { msg: '曾經,我也是一個單純的少年,單純的我,傻傻的問,誰是世界上最單純的男人' }, methods: {}, //定義私用局部過濾器。只能在當前 vue 對象中使用 filters: { dataFormat(msg) { return msg+'xxxxx'; } } });
注意:
1、 當有局部和全局兩個名稱相同的過濾器時候,會以就近原則進行調用,即:局部過濾器優先於全局過濾器被調用!
2、 一個表達式可以使用多個過濾器。過濾器之間需要用管道符“|”隔開。其執行順序從左往右