Vue,过滤器的了解和使用

  • Post author:
  • Post category:vue



定义:对需要显示的数据进行格式化之后进行呈现。

语法:

(1)全局的实现方式:Vue.filter(name,callback)

(2)局部的实现方式:new Vue{filters:{}}

使用方式:

(1){

{ xxx | 过滤器名}}

(2) v-bind:属性 = “xxx | 过滤器名”

过滤在使用的时候需要注意:

(1)过滤器也可以接收额外参数、多个过滤器也可以串联。例如:

过滤器可以实现传参的方式:{

{time | timeFormater(‘YYYY_MM_DD’) | mySlice}}

,在这里,time传给 timeFormater(‘YYYY_MM_DD’) ,接着 timeFormater(‘YYYY_MM_DD’)的返回值传给mySlice,在这里“|”指的是管道的意思。

(2)过滤器不会改变原本的数据,只是对原本的数据进行过滤,产生新的数据并且返回。

<!DOCTYPE html>
<html lang="en">

<head>
                  <meta charset="UTF-8">
                  <meta http-equiv="X-UA-Compatible" content="IE=edge">
                  <meta name="viewport" content="width=device-width, initial-scale=1.0">
                  <title>过滤器</title>
                  <script type="text/javascript" src="../vue_js/vue.js"></script>
                  <script type="text/javascript" src="../vue_js/dayjs.min.js"></script>
</head>

<body>
                  <div id="root">
                                    <h1>此时的时间戳是{{time}}</h1>
                                    <h1>利用计算属性实现:{{computedTime}}</h1>
                                    <h1>利用method实现:{{getFmtTime()}}</h1>
                                    <h1>过滤器实现:{{time | timeFormater}}</h1>
                                    <h1>过滤器可以实现传参的方式:{{time | timeFormater('YYYY_MM_DD') | mySlice}}</h1>
                                    <h1 :x="msg | mySlice">无极生太极,太极生两仪</h1>
                  </div>
                  <script>
                                    Vue.config.productionTip = false
                                    //全局过滤器
                                    Vue.filter('mySlice', function (value) {
                                                      return value.slice(0, 4)
                                    })
                                    const vm = new Vue({
                                                      el: '#root',
                                                      data: {
                                                                        msg: '我爱中国,!!!!',
                                                                        time: 1663142688108
                                                      },
                                                      computed: {
                                                                        computedTime() {
                                                                                          return dayjs(this.time).format('YYYY年MM月DD日 HH:mm:ss');
                                                                        }
                                                      },
                                                      methods: {
                                                                        getFmtTime() {
                                                                                          return dayjs(this.time).format('YYYY年MM月DD日 HH:mm:ss')
                                                                        }
                                                      },
                                                      //局部过滤器
                                                      filters: {
                                                                        timeFormater(value, str = 'YYYY年MM月DD日 HH:mm:ss') {
                                                                                          return dayjs(value).format(str)
                                                                        }
                                                      }
                                    })

                  </script>
</body>

</html>



版权声明:本文为weixin_43228946原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。