Vue.js中如何在自定义方法内正确调用全局dateFormat日期格式化过滤器
Vue方法内调用@vuejs-community/vue-filter-date-format全局过滤器的正确姿势
核心调用规则
所有Vue全局过滤器在方法内调用时,函数参数顺序遵循固定逻辑:
- 第一个入参永远是管道符左侧传入的待处理源值,和模板里
{{ 源值 | 过滤器名(参数1, 参数2) }}的语法完全对应 - 后续入参依次对应模板里过滤器括号内传入的配置项
同时这个包的dateFormat过滤器要求传入的源值必须是合法的Date实例,不能直接传原始时间戳、日期字符串。
常见无效写法的问题拆解
你之前尝试的几类写法无法正常运行的原因:
this.$options.filters.dateFormat('MMM. DD, YYYY', dateFormatConfig):完全缺少第一个位置的待处理日期源值,没有输入自然没有格式化结果this.$options.filters.dateFormat('MMM. DD, YYYY', VALUE)、this.$options.filters.dateFormat(VALUE, 'MMM. DD, YYYY'):两种写法都颠倒了参数顺序,把格式字符串当成了第一个待处理源值传入,同时没有把原始VALUE转成合法Date对象this.$options.filters.dateFormat('MMM. DD, YYYY', dateFormatConfig)(VALUE):该过滤器的实现是普通函数,不支持柯里化(先传配置再二次调用传值)的调用形式
验证可用的正确写法
满足参数顺序、数据类型两个要求后,自定义方法内的调用代码可正常运行:
// 基础格式化写法 this.$options.filters.dateFormat(new Date(VALUE), 'MMM. DD, YYYY') // 带自定义格式配置的完整写法 this.$options.filters.dateFormat(new Date(VALUE), 'MMM. DD, YYYY', dateFormatConfig)
内容的提问来源于stack exchange,提问作者Jason
相关产品推荐
相关产品推荐

