目录
  • Vue引入全局过滤器
    • 创建单独的文件
    • 加上时间过滤函数
    • 在main.js中全局引入
    • 在组件中使用formatDate过滤时间戳
  • vue全局过滤器配置
    • 总结

      Vue引入全局过滤器

      创建单独的文件

      Vue如何引入全局过滤器

      加上时间过滤函数

      将formatDate 暴露export 出来

      // 时间戳转时分秒
      function getformatDate (date, fmt) {
        if (/(y+)/.test(fmt)) {
            fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length));
        }
        let o = {
            'M+': date.getMonth() + 1,
            'd+': date.getDate(),
            'h+': date.getHours(),
            'm+': date.getMinutes(),
            's+': date.getSeconds()
        };
        for (let k in o) {
            if (new RegExp(`(${k})`).test(fmt)) {
                let str = o[k] + '';
                fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? str : padLeftZero(str));
            }
        }
        return fmt;
      };
      
      function padLeftZero (str) {
        return ('00' + str).substr(str.length);
      };
      
       // 时间过滤
       export function formatDate(time) {
        return getformatDate(new Date(time), "yyyy-MM-dd hh:mm");
      }
      
      

      在main.js中全局引入

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

      在组件中使用formatDate过滤时间戳

                <el-table :data="item.children" style="width: 100%">
                  <el-table-column prop="title" label="标题"></el-table-column>
                  <el-table-column prop="portName" label="上传单位"></el-table-column>
                  <el-table-column prop="createdTime" label="上传时间">
                    <template slot-scope="scope">{{scope.row.createdTime | formatDate}}</template>
                  </el-table-column>
                </el-table>
      

      页面显示

      Vue如何引入全局过滤器

      vue全局过滤器配置

      有时一个过滤器需要在项目中多次使用,此时可以将该过滤器定义为全局过滤器,全局过滤器在main.js下配置。

      以时间过滤器为例,当为局部过滤器写为:

      filters: {
        timeForm(val) {
       
              if (typeof (value) == "undefined" || value === null) return "";
       
              let date = new Date(value);
              var y = date.getFullYear();
              var m = date.getMonth() + 1;
              var d = date.getDate();
              if (isNaN(y) && y != 0) {
                y = " ";
              }
              if (isNaN(m) && m != 0) {
                m = " ";
              } else {
                (m < 10 ? "0" + m : m);
              }
              if (isNaN(d) && d != 0) {
                d = " ";
              } else {
                (d < 10 ? "0" + d : d);
              }
       
              return y + "-" + m + "-" + d + " " + date.toTimeString().substr(0, 5);
      }

      现在我们把它设置成全局过滤器

      Vue.filter('timeForm', function (value) {
        if (typeof (value) == "undefined" || value === null) return "";
       
        let date = new Date(value);
        var y = date.getFullYear();
        var m = date.getMonth() + 1;
        var d = date.getDate();
        if (isNaN(y) && y != 0) {
          y = " ";
        }
        if (isNaN(m) && m != 0) {
          m = " ";
        } else {
          (m < 10 ? "0" + m : m);
        }
        if (isNaN(d) && d != 0) {
          d = " ";
        } else {
          (d < 10 ? "0" + d : d);
        }
        return y + "-" + m + "-" + d + " " + date.toTimeString().substr(0, 5);
      });
      var timeForm = Vue.filter('timeForm');
      • 直接定义为:Vue.filter('timeForm', function (value) { //过滤代码}
      • 然后定义一下过滤器:var timeForm = Vue.filter('timeForm')   

      使用的时候和局部过滤器相同方式使用,直接{{   value   |  filter   }}  即可

      总结

      以上为个人经验,希望能给大家一个参考,也希望大家多多支持。

      声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。