vue每个页面都会用到一个函数,但我不想一个个引入

一个时间戳的函数,很多页面都会用到

//HTML
{{ scope.row.createTime|formatDate }}

//引入js
import {formatDate} from '@/assets/js/date.js'

//过滤器
filters:{
    formatDate(time) {
        var date = new Date(time);
        return formatDate(date, 'yyyy-MM-dd hh:mm:ss');
    },
}

每次这个页面需要用到时间戳,我就会把代码复制过来,特别麻烦,有好的解决方法吗?

阅读 5.8k
9 个回答

用官网上的全局方法
图片描述

写好自己的过滤器,再去main.js主界面加载全局文件Global.js
图片描述

然后在自己需要该filter的界面,加入过滤器名字
图片描述

最后,我这demo效果图
图片描述

方法很多,按照自己认为最优的方式选择。
可以用全局过滤器,也可以用全局混入。
如果这两个都不熟,或者不太清楚怎么用,可以将你需要用到的这段代码写成一个util工具,也就是一个util.js文件。

export default {
  formatDate(time){
    
  }
}

然后在main.js里边把它挂载到全局:

Vue.prototype.$utils = utils;

然后,在你需要的地方直接用就可以了。

this.$utils.formatDate(time)

全局filter啊

方案1、后端传格式化过的时间
方案2、既然用了过滤器,那为何不用全局的过滤器呢。vue文档:过滤器

  1. mixin
  2. extend
  3. Vue.filter

使用全局过滤器

也可以这样,在main.js里面将函数绑定在vue原型上。

Vue.prototype.formatDate=(time)=>{
    var date = new Date(time);
    return formatDate(date, 'yyyy-MM-dd hh:mm:ss');
    }

在main.js 中 注册全局的过滤器

Vue.filter('formatDate', function(time){
  var date = new Date(time);
        return formatDate(date, 'yyyy-MM-dd hh:mm:ss');
        })
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题