zoukankan      html  css  js  c++  java
  • vue学习(四)Vue自带过滤器全攻略

    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自带的过滤器:json

    功能:解析对象,类似JSON.stringfiy()

    <!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">
            {{a | json}}
        </div>
        <script>
            var vm = new Vue({
                data:{
                    t1:'',
                    a:{
                        name:'ttt',
                        age:13
                    }
                }
            }).$mount('#box');  
        </script>
    </body>
    </html>

    上面代码输出:{ "name": "ttt", "age": 13 }

  • 相关阅读:
    linux运维学习
    2017年阿里巴巴三面经验
    Spring Boot:在Spring Boot中使用Mysql和JPA
    meshroom和alicevision在Ubuntu16上的安装过程
    ubuntu rm -rf ntfs 硬盘恢复
    python 脚本内部修改 LD_LIBRARY_PATH
    python uml 图
    tlmgr 相关
    ubuntu 安装 clangd 10.0.0
    zsh 快捷键
  • 原文地址:https://www.cnblogs.com/kunmomo/p/12487443.html
Copyright © 2011-2022 走看看