• vue学习笔记(一) ---- vue指令(过滤器)


    一、什么是过滤器

    官方文档:https://cn.vuejs.org/v2/guide/filters.html

    二、过滤器的使用

    没有使用过滤器之前:

    <div id="app">
        <table>
            <thead>
            <tr>
                <th>排名</th>
                <th>菜名</th>
            </tr>
            </thead>
            <tbody>
            <tr v-for="item in list" :key="item.id">
                <td>{{ item.id }}</td>
                <td>{{ item.name}}</td>
            </tr>
            </tbody>
        </table>
    </div>
    
    <script>
        var vm = new Vue({
            el: '#app',
            data: {
                list: [
                    { id: 1, name: '黄焖鸡' },
                    { id: 2, name: '烤鱼'},
                    { id: 3, name: '鸭血粉丝'},
                    { id: 4, name: '大碗米线' },
                    { id: 5, name: '螺蛳粉' },
                    { id: 6, name: '鱼香肉丝'},
                ]
            }
        })
    </script>
    

    来吧展示:
    在这里插入图片描述

    使用过滤器之后:

    1. 使用双括号的方式去添加过滤器
     <tr v-for="item in list" :key="item.id">
                <td>{{ item.id }}</td>
                <td>{{ item.name | filterData }}</td>
     </tr>
    
    Vue.filter('filterData',function () {
            console.log('过滤器被调用了。。。')
            return '螺蛳粉  my love~~'
        })
        //在vm实例对象之前去定义过滤器
    var vm = new Vue({
        .........
    })
    

    来吧展示:

    在这里插入图片描述

    注意:过滤器的处理函数中的第一个参数已经规定死了,就是管道符前面的数,这里也就是item.name

    如下:

    Vue.filter('filterData',function (data) {
            console.log('过滤器被调用了。。。')
            return  data+ '~~~~~'
        })
    

    在这里插入图片描述

    三、给过滤器传递参数

     <td>{{ item.name | filterData('xxxxxxx')}}</td>
    
      Vue.filter('filterData',function (data,str) {
            return  data + str
     })
    

    来吧展示:

    在这里插入图片描述

    四、使用多个过滤器

    <td>{{ item.name | filterData | addstr}}</td>
    
     Vue.filter('filterData',function (data) {
            return  data+ '~~~~~'
        })
    Vue.filter('addstr',function (data) {
             return  data + '哈哈哈哈哈'
       })
    

    来吧展示:
    在这里插入图片描述

    五、全局过滤器的栗子

    <div id="app">
        <p>{{msg}}</p>
    </div>
    
    var vm = new Vue({
       el: '#app',
       data: {
       msg: '鸭血粉丝里面放有:鸭血,鸭肠,鸭肝'
            },
       methods: {}
        });
    

    在这里插入图片描述
    使用全局过滤器,将"鸭"改成"猪"
    方式一:

     <p>{{msg | filtermsg}}</p>
    
     Vue.filter('filtermsg',function (data) {
            // return data.replace('a','x')
            // replace只能替换掉第一项
            // 第一个参数传入正则,可以全局匹配
            return data.replace(/鸭/g,'猪')
    })
    

    在这里插入图片描述
    2. 方式二:
    在过滤器中传递参数

     <p>{{msg | filtermsg('猪')}}</p>
    
    Vue.filter('filtermsg',function (data,str) {
       return data.replace(/鸭/g,str)
    })
    
    1. 方式三:
      直接在参数后面传入数据
    <p>{{msg | filtermsg}}</p>
    
    Vue.filter('filtermsg',function (data,str='猪') {
            return data.replace(/鸭/g,str)
    })
    

    如果定义了另外一个vm2实例
    那么也可以使用全局过滤器

    <body>
    
    <div id="app">
        <p>{{msg | filtermsg}}</p>
    </div>
    <hr>
    
    
    <div id="app2">
        <p>{{msg | filtermsg }}</p>
    </div>
    
    <script>
        Vue.filter('filtermsg',function (data,str='猪') {
            return data.replace(/鸭/g,str)
        })
    
        var vm = new Vue({
            el: '#app',
            data: {
                msg: '鸭血粉丝里面放有:鸭血,鸭肠,鸭肝'
            },
            methods: {}
        });
        var vm2 = new Vue({
            el:'#app2',
            data: {
                msg: '哇哦~是鸭血粉丝'
            },
            methods: {}
        });
    </script>
    </body>
    
    

    在这里插入图片描述

    六、私有过滤器

    <div id="app2">
        <p>{{msg | filtermsg | addStr}}</p>
    </div>
    
    var vm2 = new Vue({
            el:'#app2',
            data: {
                msg: '哇哦~是鸭血粉丝'
            },
            methods: {},
             filters:{
                // addStr:function (data) {
                 addStr(data){
                    return data + '~~~~~~wao好好恰'
                 }
            }
    
        });
    

    在这里插入图片描述

    注意:
    私有过滤器只能vm2实例的容器才可以使用,vm实例的区域不能使用

    如果全局过滤器与私有过滤器重名的话,会以就近原则,执行私有的过滤器

    <div id="app2">
        <p>{{msg | filtermsg | addStr}}</p>
    </div>
    
    Vue.filter('filtermsg',function (data,str='猪') {
            return data.replace(/鸭/g,str)
    })
    var vm2 = new Vue({
            el:'#app2',
            data: {
                msg: '哇哦~是鸭血粉丝'
            },
            methods: {},
             filters:{
                 // addStr:function (data) {
                 addStr(data){
                    return data + '~~~~~~wao好好恰'
                 },
                 filtermsg:function (data) {
                     // return data.replace(/鸭/g,str)
                     return data + '111111'
                 }
            }
    });
    

    在这里插入图片描述

  • 相关阅读:
    《web-Mail服务的搭建》
    VMware虚拟机三种联网方法及原理
    Java总结——常见Java集合实现细节(1)
    nginx静态资源缓存策略配置
    算术验证
    JPA学习
    Spring中AOP实现
    转:Spring中事物管理
    使用docker发布spring cloud应用
    综合使用spring cloud技术实现微服务应用
  • 原文地址:https://www.cnblogs.com/Chinatsu/p/13870717.html
Copyright © 2020-2023  润新知