前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >vue 内置过滤器总结(附加自定义过滤器)

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

作者头像
Javanx
发布2019-09-04 10:31:15
1.6K0
发布2019-09-04 10:31:15
举报
文章被收录于专栏:web秀web秀

前言

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

代码语言:javascript
复制
{{ message | Filter }}

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

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

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

vue自带的过滤器

capitalize(首字母大写)

代码语言:javascript
复制
<div class="test">
    {{message | capitalize}}
</div>

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

上面代码输出:Javan

uppercase(全部大写)

代码语言:javascript
复制
// 初始message:abc

{{message | uppercase}}

// 上面代码输出:ABC

lowercase(全部小写)

代码语言:javascript
复制
// 初始message:ABC

{{message | lowercase}}

// 上面代码输出:abc

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

代码语言:javascript
复制
<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”。如果有多个参数,参数被当作一个字符串数组,对应一个、两个、三个…复数词。如果值的个数多于参数的个数,多出的使用最后一个参数。

代码语言:javascript
复制
<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。

代码语言:javascript
复制
<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} 偏移量

代码语言:javascript
复制
<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} (可选,数组格式)

代码语言:javascript
复制
<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 | Function} 需要搜索的字符串 第二个参数: {String} 可选参数 order 决定结果升序(order >= 0)或降序(order < 0),默认是升序

代码语言:javascript
复制
<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>

自定义过滤器

代码语言:javascript
复制
<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>
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年11月16日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • vue自带的过滤器
    • capitalize(首字母大写)
      • uppercase(全部大写)
        • lowercase(全部小写)
          • currency(输出金钱以及小数点)
            • pluralize(变复数)
              • debounce(事件延时)
                • limitBy(排序)
                  • filterBy(过滤)
                    • orderBy(排序)
                    • 自定义过滤器
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档