首页 > 其他 > 详细

vue学习(四)Vue自带过滤器全攻略

时间:2020-03-13 17:48:25      阅读:97      评论:0      收藏:0      [点我收藏+]

VueJs中的过滤器基础

过滤器是一个通过输入数据,能够及时对数据进行处理并返回一个数据结果的简单函数。Vue有很多很便利的过滤器,可以参考官方文档,过滤器通常会使用管道标志 “ | ”

链式过滤

VueJs允许你链式调用过滤器,简单的来说,就是一个过滤器的输出成为下一个过滤器的输入,然后再次过滤。

<ul>
       <li v-for="product in products
                   | filterBy electronics in category
                   | orderBy  name "
       >
            {{ product.name | capitalize }} - {{ product.price | currency }}
      </li>
</ul>

语法

单个:{{msg| filterA}}

eg:{{‘welcome‘| uppercase}} -》WELCOME

多个:{{msg| filterA | filterB}} 

eg:{{‘WELCOME‘|lowercase|capitalize}} -》Welcome

传参:{{msg| filterA 参数 参数}}

eg:{{12|currency “¥”}} -》¥12.00  {{12|currency “rmb”}} -》rmb12.00

注意:welcome可以替换成data里的数据

过滤器实例

一、Vue自带的过滤器:capitalize

功能:首字母大写

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>Vue自带的过滤器</title>
        <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
        <script src="../js/vue.js" type="text/javascript" charset="utf-8"></script>
    </head>
    <body>
        <div class="test">
            {{message | capitalize}}
        </div>
        <script type="text/javascript">
            var myVue = new Vue({
                el: ".test",
                data: {
                    message: "abc"
                }
            })
        </script>
    </body>
</html>

上面代码输出:Abc

二、Vue自带的过滤器:uppercase

功能:全部大写

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>Vue自带的过滤器</title>
        <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
        <script src="../js/vue.js" type="text/javascript" charset="utf-8"></script>
    </head>
    <body>
        <div class="test">
            {{message | uppercase}}
        </div>
        <script type="text/javascript">
            var myVue = new Vue({
                el: ".test",
                data: {
                    message: "abc"
                }
            })
        </script>
    </body>
</html>

上面代码输出:ABC

三、Vue自带的过滤器:lowercase

功能:全部小写

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>Vue自带的过滤器</title>
        <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
        <script src="../js/vue.js" type="text/javascript" charset="utf-8"></script>
    </head>
    <body>
        <div class="test">
            {{message | lowercase}}
        </div>
        <script type="text/javascript">
            var myVue = new Vue({
                el: ".test",
                data: {
                    message: "ABC"
                }
            })
        </script>
    </body>
</html>

上面代码输出:abc

四、Vue自带的过滤器:currency

功能:输出金钱以及小数点

参数:

第一个参数     {String} [货币符号] - 默认值: ‘$‘

第二个参数     {Number} [小数位] - 默认值: 2

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>Vue自带的过滤器</title>
        <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
        <script src="../js/vue.js" type="text/javascript" charset="utf-8"></script>
    </head>
    <body>
        <div class="test">
            {{message | currency}} <!--输出$123.47-->
            {{message | currency ¥ "1"}} <!--输出$123.5-->
        </div>
        <script type="text/javascript">
            var myVue = new Vue({
                el: ".test",
                data: {
                    message: "123.4673"
                }
            })
        </script>
    </body>
</html>

五、Vue自带的过滤器:debounce

(1)限制: 需在@里面使用

(2)参数:{Number} [wait] - 默认值: 300

(3)功能:包装处理器,让它延迟执行 x ms, 默认延迟 300ms。包装后的处理器在调用之后至少将延迟 x ms, 如果在延迟结束前再次调用,延迟时长重置为 x ms。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>Vue自带的过滤器</title>
        <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
        <script src="../js/vue.js" type="text/javascript" charset="utf-8"></script>
    </head>
    <body>
        <div class="test">
            <button id="btn" @click="disappear | debounce 10000">点击我,我将10秒后消失</button>
        </div>
        <script type="text/javascript">
            var myVue = new Vue({
                el: ".test",
                methods: {
                    disappear: function () {
                        document.getElementById("btn").style.display= "none";
                    }
                }
            })
        </script>
    </body>
</html>

六、Vue自带的过滤器:limitBy

(1)限制:需在v-for(即数组)里面使用

(2)两个参数:

第一个参数:{Number} 取得数量

第二个参数:{Number} 偏移量

注:可以接受两个参数,第一个表取几个,第二个表示从哪开始(0开始计算)

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>Vue自带的过滤器</title>
        <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
        <script src="../js/vue.js" type="text/javascript" charset="utf-8"></script>
    </head>
    <body>
        <div class="test">
            <ul v-for="item in lili | limitBy 10"> <!--输出1 2 3 4 5 6 7 8 9 10-->
                <li>{{item}}</li>
            </ul>
            <ul v-for="item in lili | limitBy 10 3"> <!--输出 4 5 6 7 8 9 10 11 12 13-->
                <li>{{item}}</li>
            </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>
    </body>
</html>
例一:
<ul v-for="val in arr | limitBy 2">
    <li>{{val}}</li>
</ul>
例二:
<ul v-for="val in arr | limitBy 2 1">
    <li>{{val}}</li>
</ul>
例三:
<ul v-for="val in arr | limitBy 2 arr.length-2"> <!--取最后两个-->
    <li>{{val}}</li>
</ul>

七、Vue自带的过滤器:filterBy

(1)限制:需在v-for(即数组)里面使用

(2)三个参数:

第一个参数: {String | Function} 需要搜索的字符串

第二个参数: in (可选,指定搜寻位置)

第三个参数: {String} (可选,数组格式)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <script src="./vue1.0.js"></script>
</head>
<body>
    <div id="box">
        <ul>
       // 过滤name和title中包含a的 <li v-for="val in man | filterBy ‘a‘ in ‘name‘ ‘title‘"> {{val.price}} //输出 1,3 </li> </ul> </div> <script> var vm = new Vue({ data:{ man: [ //此处注意man是数组,不是对象 { name:a, title:ab, price:1 }, { name:b, title:c, price:2 }, { name:b, title:a, price:3 } ] } }).$mount(#box); </script> </body> </html>
例一:
<ul v-for="val in arr | filterBy ‘w‘">
    <li>{{val}}</li>
</ul>
例二:
<input type="text" v-model="t1"/>
<!-- filterBy 参数(带引号) 过滤数据-->
<ul v-for="val in arr | filterBy t1">
    <li>{{val}}</li>
</ul>

八、Vue自带的过滤器:orderBy

(1)限制:需在v-for(即数组)里面使用

(2)三个参数:

第一个参数: {String | Array<String> | Function} 需要搜索的字符串

第二个参数: {String} 可选参数 order 决定结果升序(order >= 0)或降序(order < 0),默认是升序

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>Vue自带的过滤器</title>
        <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
        <script src="../js/vue.js" type="text/javascript" charset="utf-8"></script>
    </head>
    <body>    
        <div class="test">
            <!--遍历数组-->
            <ul v-for="item in lili | orderBy ‘o‘ 1"> <!--输出kk ll oi-->
                <li>{{item}}</li>
            </ul>
            
            <ul v-for="item in lili | orderBy ‘o‘ -1"> <!--输出oi ll kk-->
                <li>{{item}}</li>
            </ul>
            
            <!--遍历含对象的数组-->
            <ul v-for="item in man | orderBy ‘name‘ 1"> <!--输出Bruce Chuck Jackie-->
                <li>{{item.name}}</li>
            </ul>
            
            <ul v-for="item in man | orderBy ‘name‘ -1"> <!--输出Jackie Chuck Bruce-->
                <li>{{item.name}}</li>
            </ul>
            
            <!--使用函数排序-->
            <ul v-for="item in man | orderBy ageByTen"> <!--输出Bruce Chuck Jackie-->
                <li>{{item.name}}</li>
            </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>
    </body>
</html>

 

vue学习(四)Vue自带过滤器全攻略

原文:https://www.cnblogs.com/kunmomo/p/12487443.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!