前言

vue中过滤器filters的作用是什么?
能够帮我们处理快速一些数据的格式----format数据格式化处理。
语法也很简单

{{ message | Filter }}

message: 要格式化的数据
Filter: 对数据格式化的方法

下面看看vue自带过滤器有哪些,并附带小示例。最后记得看看如果自定义过滤器哦!

vue 内置过滤器总结(附加自定义过滤器)

vue自带的过滤器

capitalize(首字母大写)

<div class="test"> {{message | capitalize}} </div> <script type="text/javascript"> var myVue = new Vue({ el: ".test", data: { message: "javan" } }) </script>

上面代码输出:Javan

uppercase(全部大写)

// 初始message:abc {{message | uppercase}} // 上面代码输出:ABC

lowercase(全部小写)

// 初始message:ABC {{message | lowercase}} // 上面代码输出:abc

currency(输出金钱以及小数点)

<div class="test"> {{message | currency}} // 输出$520.13 {{message | currency '¥' "2"}} //输出 $520.13 </div> <script type="text/javascript"> var myVue = new Vue({ el: ".test", data: { message: "520.1314" } }) </script>

第一个参数 {String} [货币符号] - 默认值: ‘$’
第二个参数 {Number} [小数位] - 默认值: 2

pluralize(变复数)

如果只有一个参数,复数形式只是简单地在末尾添加一个 “s”。如果有多个参数,参数被当作一个字符串数组,对应一个、两个、三个…复数词。如果值的个数多于参数的个数,多出的使用最后一个参数。

<div class="test"> {{message}} {{message | pluralize 'item'}} 输出: 1 item <ul v-for="item in lili"> <li> {{item}} {{item | pluralize 'item'}} 输出: 1 item 2 items 3 items </li> </ul> <ul v-for="item in lili"> <li> {{item}} {{item | pluralize 'st' 'rd'}} 输出: 1 st 2 rd 3 rd </li> </ul> <ul v-for="item in man"> <li> {{item}} {{item | pluralize 'item'}} 输出: 1 item 2 items 3 items </li> </ul> <ul v-for="item in man"> <li> {{item}} {{item | pluralize 'st' 'rd'}} 输出: 1 st 2 rd 3 rd </li> </ul> </div> <script type="text/javascript"> var myVue = new Vue({ el: ".test", data: { message: 1, lili: [1,2,3], man: { name1: 1, name2: 2, name3: 3 } } }) </script>

debounce(事件延时)

  1. 限制: 需在@里面使用
  2. 参数:{Number} [wait] - 默认值: 300
  3. 功能:包装处理器,让它延迟执行 x ms, 默认延迟 300ms。包装后的处理器在调用之后至少将延迟 x ms, 如果在延迟结束前再次调用,延迟时长重置为 x ms。
<div class="test"> <button id="btn" @click="doSomeThing | debounce 10000">点击我</button> </div> <script type="text/javascript"> var myVue = new Vue({ el: ".test", methods: { doSomeThing: function () { // do something } } }) </script>

limitBy(排序)

  1. 限制:需在v-for(即数组)里面使用
    第一个参数:{Number} 取得数量
    第二个参数:{Number} 偏移量
<div class="test"> <ul v-for="item in lili | limitBy 10"> <li>{{item}}</li> 输出1 2 3 4 5 6 7 8 9 10 </ul> <ul v-for="item in lili | limitBy 10 3"> <li>{{item}}</li> 输出 4 5 6 7 8 9 10 11 12 13 </ul> </div> <script type="text/javascript"> var myVue = new Vue({ el: ".test", data: { lili: [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15] } }) </script>

filterBy(过滤)

  1. 限制:需在v-for(即数组)里面使用
    第一个参数: {String | Function} 需要搜索的字符串
    第二个参数: in (可选,指定搜寻位置)
    第三个参数: {String} (可选,数组格式)
<div class="test"> <ul v-for="item in lili | filterBy 'o' "> <li>{{item}}</li> 输出oi oa lo ouo oala </ul> <ul v-for="item in man | filterBy 'l' in 'name' "> <li>{{item.name}}</li> 输出lily lucy </ul> <ul v-for="item in man | filterBy 'l' in 'name' 'dada' "> <li>{{item.name+"+"+item.dada}}</li> 输出lily+undefined lucy+undefined undefined+lsh </ul> </div> <script type="text/javascript"> var myVue = new Vue({ el: ".test", data: { lili: ["oi", "oa", "ll", "lo" ,"ouo" ,"kk" ,"oala"], man: [ //此处注意man是数组,不是对象 {name: "lily"}, {name: "lucy"}, {name: "oo"}, {dada: "lsh"}, {dada: "ofg"} ] } }) </script>

orderBy(排序)

  1. 限制:需在v-for(即数组)里面使用
    第一个参数: {String | Array<String> | Function} 需要搜索的字符串
    第二个参数: {String} 可选参数 order 决定结果升序(order >= 0)或降序(order < 0),默认是升序
<div class="test"> 遍历数组 <ul v-for="item in lili | orderBy 'o' 1"> <li>{{item}}</li> 输出kk ll oi </ul> <ul v-for="item in lili | orderBy 'o' -1"> <li>{{item}}</li> 输出oi ll kk </ul> 遍历含对象的数组 <ul v-for="item in man | orderBy 'name' 1"> <li>{{item.name}}</li> 输出Bruce Chuck Jackie </ul> <ul v-for="item in man | orderBy 'name' -1"> <li>{{item.name}}</li> 输出Jackie Chuck Bruce </ul> 使用函数排序 <ul v-for="item in man | orderBy ageByTen"> <li>{{item.name}}</li> 输出Bruce Chuck Jackie </ul> </div> <script type="text/javascript"> var myVue = new Vue({ el: ".test", data: { lili: ["oi", "kk", "ll"], man: [ //此处注意man是数组,不是对象 { name: 'Jackie', age: 62 }, { name: 'Chuck', age: 76 }, { name: 'Bruce', age: 61 } ] }, methods: { ageByTen: function () { return 1; } } }) </script>

自定义过滤器

<div class="test"> {{'2018-11-16 18:12:15'|formatDate}} </div> <script type="text/javascript"> var myVue = new Vue({ el: ".test", methods: { }, filters:{ formatDate (val) { return moment(val).format('YYYY-MM-DD'); // 这里用到了moment.js } } }) </script>