VUE----filter过滤器

2021-01-22  本文已影响0人  JuMinggniMuJ

我使用的是vue-cli2
vue中有种叫过滤器的东西,它可以将数据以我们想要的方式展示,其中过滤器又分为全局过滤器和局部过滤器。

1.局部过滤器:

顾名思义,局部过滤器就是在组件中使用,并且只在当前组件中生效的过滤器,它用于我们过滤不常用的数据。

//script中代码:
filter:{
  filter_name(val){
    return val_deal_function
  }
}
//模板中使用:
{{variable |filter_name}}
2.全局过滤器:

但是有的变量例如时间后端传来的数据是时间戳、金钱后端传来的有可能是整数,但是我们页面要显示的时间是时间格式、金钱需要保留两位小数等等,这个时候我们就可以定义一个全局过滤器减少代码的冗余。
1.在main.js同级目录下创建filters文件夹,在文件夹中创建filters.js文件。
2.这里我只简单封装了时间和金钱过滤器:


    /**
     * [将数字保留两位小数]
     * @Author   juming
     * @DateTime 2021-01-22T14:34:59+0800
     * @param    {[type]}                 val [description]
     * @return   {[type]}                     [description]
     */
    const my_number_format = function(val){
        return parseFloat(val).toFixed(2)
    }

    /**
     * [将时间戳格式化为YYYY-MM-DD HH:II]
     * [需要先将时间戳 * 1000,否则一直是1970年]
     * @Author   juming
     * @DateTime 2021-01-22T14:35:39+0800
     * @param    {[type]}                 val [description]
     * @return   {[type]}                     [description]
     */
    const my_date_format = function(val){
        let timestamp = parseInt(val) * 1000
        let date = new Date(timestamp);
      let seperator1 = "-";
      let seperator2 = ":";
      let month = date.getMonth() + 1;
      let strDate = date.getDate();
      if (month >= 1 && month <= 9) {
          month = "0" + month;
      }
      if (strDate >= 0 && strDate <= 9) {
          strDate = "0" + strDate;
      }
      let hours = date.getHours();
      if(hours >=0 && hours <=9){
          hours = "0" + hours;
      }
      let minutes = date.getMinutes();
      if(minutes >=0 && minutes <=9){
          minutes = "0" + minutes;
      }
      let currentdate = date.getFullYear() + seperator1 + month + seperator1 + strDate + ' ' + hours + seperator2 + minutes;
      return currentdate;
    }

export {
    my_number_format,
    my_date_format
}

3.main.js中引入:

import * as filters from './filters/filters'
Object.keys(filters).forEach(key => {
  Vue.filter(key, filters[key])
})

4.组件中就可以像局部过滤器一样直接使用。

上一篇 下一篇

猜你喜欢

热点阅读