Vue过滤器

作者: 赵镇 | 来源:发表于2018-08-15 22:50 被阅读1次

    Vue过滤器

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <title></title>
            <script src="lib/vue.min.js"></script>
            <style type="text/css">
            </style>
        </head>
        <body>
            
            <div id="app">
                <h1>{{msg |msgFormat}}</h1>
            </div>
        </body>
        <script>
            Vue.filter('msgFormat',function(msg){
                return msg.replace(/学习/g,'讨论');
            })
            var vm = new Vue({
                el:'#app',
                data:{
                    msg:"我是一个爱学习的人,学习各种技术"
                }
            })
        </script>
    </html>
    

    使用Vue.filter()来对指定的元素进行过滤,function中传递的参数即是el表达式中的第一个值,

    同时还可以传递多个参数

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <title></title>
            <script src="lib/vue.min.js"></script>
            <style type="text/css">
            </style>
        </head>
        <body>
            
            <div id="app">
                <h1>{{msg |msgFormat('讨论')}}</h1>
            </div>
        </body>
        <script>
            Vue.filter('msgFormat',function(msg,arg){
                return msg.replace(/学习/g,arg);
            })
            var vm = new Vue({
                el:'#app',
                data:{
                    msg:"我是一个爱学习的人,学习各种技术"
                }
            })
        </script>
    </html>
    

    同时可以进行多次过滤

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <title></title>
            <script src="lib/vue.min.js"></script>
            <style type="text/css">
            </style>
        </head>
        <body>
            
            <div id="app">
                <h1>{{msg |msgFormat('讨论')|test}}</h1>
            </div>
        </body>
        <script>
            Vue.filter('msgFormat',function(msg,arg){
                return msg.replace(/学习/g,arg);
            })
            Vue.filter('test',function(msg){
                return msg+'=====';
            })
            var vm = new Vue({
                el:'#app',
                data:{
                    msg:"我是一个爱学习的人,学习各种技术"
                }
            })
        </script>
    </html>
    
    

    实际中经常会使用到的实例

      Vue.filter('dateFormat', function (dateStr, pattern = "") {
          // 根据给定的时间字符串,得到特定的时间
          var dt = new Date(dateStr)
    
          //   yyyy-mm-dd
          var y = dt.getFullYear()
          var m = dt.getMonth() + 1
          var d = dt.getDate()
    
          // return y + '-' + m + '-' + d
    
    
    
          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}`
          }
        })
    

    同时如果页面中存在两个Vue对象,针对每个对象可以定义私有过滤器,如下

        // 如何自定义一个私有的过滤器(局部)
        var vm2 = new Vue({
          el: '#app2',
          data: {
            dt: new Date()
          },
          methods: {},
          filters: { // 定义私有过滤器    过滤器有两个 条件  【过滤器名称 和 处理函数】
            // 过滤器调用的时候,采用的是就近原则,如果私有过滤器和全局过滤器名称一致了,这时候 优先调用私有过滤器
            dateFormat: function (dateStr, pattern = '') {
              // 根据给定的时间字符串,得到特定的时间
              var dt = new Date(dateStr)
    
              //   yyyy-mm-dd
              var y = dt.getFullYear()
              var m = (dt.getMonth() + 1).toString().padStart(2, '0')
              var d = dt.getDate().toString().padStart(2, '0')
    
              if (pattern.toLowerCase() === 'yyyy-mm-dd') {
                return `${y}-${m}-${d}`
              } else {
                var hh = dt.getHours().toString().padStart(2, '0')
                var mm = dt.getMinutes().toString().padStart(2, '0')
                var ss = dt.getSeconds().toString().padStart(2, '0')
    
                return `${y}-${m}-${d} ${hh}:${mm}:${ss} ~~~~~~~`
              }
            }
          },
    

    相关文章

      网友评论

        本文标题:Vue过滤器

        本文链接:https://www.haomeiwen.com/subject/dipgbftx.html