Vue2 过滤器以及在 Vue 3 中的替代方案

1. Vue2.js 过滤器简介

Vue.js 的过滤器允许你在模板中轻松地实现数据格式化。它是一种功能简单的数据转换函数,可以帮助开发者在展示数据时进行格式调整,而不改动底层数据。

2. 如何在 Vue 2 中创建过滤器

在Vue2中创建全局过滤器的方法如下:

Vue.filter('formatDate', function (value) {
  if (!value) return ''
  return new Date(value).toLocaleDateString()
})

创建局部过滤器的方法如下:

new Vue({
  el: '#app',
  data: {
    date: '2022-01-01'
  },
  filters: {
    formatDate: function (value) {
      if (!value) return ''
      return new Date(value).toLocaleDateString()
    }
  }
})

3. 在模板中使用过滤器

过滤器可以在两种地方使用:

  1. 插值表达式:{{ value | filter }}
  2. v-bind 表达式:v-bind:attribute="value | filter"

4. 在 Vue 3 中替代过滤器的方式

修改时间格式案例:

Vue3中取消了 过滤器的概念,其中:

  1. 局部过滤器被完全删除
  2. 全局过滤器虽然被移除,但是可以使用 全局属性 进行替代

那么在列表中的时间处理部分,在 vue2 时代通常我们都是通过 全局过滤器 来进行实现的,所以在 vue3 中我们就顺理成章的通过 全局属性 替代实现

  1. 时间处理部分我们通过 Day.js 进行处理

  2. 下载 Day.js

    npm i dayjs@1.10.6
    
  3. 创建 src/filter 文件夹,用于定义 全局属性

    import dayjs from 'dayjs'
    
    const dateFilter = (val, format = 'YYYY-MM-DD') => {
      if (!isNaN(val)) {
        val = parseInt(val)
      }
    
      return dayjs(val).format(format)
    }
    
    export default app => {
      app.config.globalProperties.$filters = {
        dateFilter
      }
    }
    
  4. main.js 中导入

    // filter
    import installFilter from '@/filters'
    
    installFilter(app)
    
  5. user-manage 中使用全局属性处理时间解析

    <el-table-column :label="$t('msg.excel.openTime')">
              <template #default="{ row }">
                {{ $filters.dateFilter(row.openTime) }}
              </template>
            </el-table-column>
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

John Rivers

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值