Vue 全局过滤器和私有过滤器

全局过滤器

<div id="app">
    <p>{{ msg | msgFormat }}</p>    <!-- msgFormat为过滤器名称 -->
</div>
<script>
    // function的第一个参数已经规定死了,永远是过滤器管道符“|”前面传递过来的数据
    Vue.filter('msgFormat', function(msg) {
        return msg.replace(/葡萄/g,'柚子')  //   /g 表示该表达式将用来在输入字符串中查找所有可能的匹配,返回的结果可以是多个。如果不加/g最多只会匹配一个
    })
   var vm = new Vue ({
       el: '#app',
       data: {
           msg: '吃葡萄不吐葡萄皮'
       }
   })
</script>

注1

过滤器名称后面也可以传递参数,且可以传递多个

<div id="app">
    <p>{{ msg | msgFormat('西瓜','香蕉') }}</p>   
</div>
Vue.filter('msgFormat', function(msg, arg1, arg2) {
        return msg.replace(/葡萄/g, arg1+arg2)  
    })

在这里插入图片描述

注2

可以同时调用多个过滤器

<div id="app">
    <p>{{ msg | msgFormat('西瓜','香蕉') | tail}}</p>    
</div>
<script>
    Vue.filter('msgFormat', function(msg, arg1, arg2) {
        return msg.replace(/葡萄/g, arg1+arg2)  
    })
    Vue.filter('tail', function(msg) {
        return msg + '哈哈哈'
    })
   var vm = new Vue ({
       el: '#app',
       data: {
           msg: '吃葡萄不吐葡萄皮'
       }
   })
</script>

在这里插入图片描述

私有过滤器 (时间格式化案例)

<div id="app2">
    <h3>{{  dt | dateFormat}}</h3>   //调用过滤器采用就近原则,若私有过滤器和全局过滤器名称一致,这时候优先调用私有过滤器。另外,全局过滤器是所有的VM实例共享的
</div>
<script>
    var vm = new Vue ({
        el: '#app2',
        data: {
            dt: new Date()
        },
        methods: {},
        filters: {
            dateFormat: function(dateStr, pattern='') {
                // 根据给定的时间字符串,得到特定的时间
                var dt = new Date(dateStr)
                
                var y = dt.getFullYear()
                var m = dt.getMonth() +1
                var d = dt.getDate()

                if (pattern.toLowerCase() === 'yyyy-mm-dd') {
                    return `${y}-${m}-${d}`
                } else {
                    var hh = dt.getHours()
                    var mm = dt.getMinutes()
                    var ss = dt. getSeconds()

                    return `${y}-${m}-${d} ${hh}:${mm}:${ss}`
                }
            }
        }
    })
</script>

在这里插入图片描述

发布了39 篇原创文章 · 获赞 0 · 访问量 425

猜你喜欢

转载自blog.csdn.net/weixin_43912756/article/details/104915367
今日推荐