在vue template模板{{xxx}}中的数据进行格式化处理

项目中常常需要在tempalte模板中使用函数或其它函数包直接对模板内的后端接口数据进行处理。而将数据中的某个字段统一筛出来后再处理又太麻烦。

故用到了vue中的filters过滤器对template模板中的时间直接进行过滤格式化。

这里以Vue格式化日期为例。

后台返回格式化前的日期:

在这里插入图片描述

filters过滤处理后的日期:

在这里插入图片描述

上代码:

<template>
  <div class="contain">
    <div class="tableArea">
      <el-table v-loading="loading" :data="tableData" stripe>

        <el-table-column prop="createTime" label="数据日期" min-width="180">
          <template slot-scope="scope">
            <div>
              {{ scope.row.createTime | createformat() }}
            </div>
          </template>
        </el-table-column>

        <el-table-column prop="updateTime" label="上传时间" min-width="180">
          <template slot-scope="scope">
            <div>
              {{ scope.row.updateTime | updateformat() }}
            </div>
          </template>
        </el-table-column>
      </el-table>
    </div>
  </div>
</template>
<script>
import moment from 'moment';
import tips from '../../components/tips';

export default {
  filters: {
    createformat(val) {
      return moment(val).format('YYYY/MM/DD');
    },
    updateformat(val) {
      return moment(val).format('MM/DD HH:mm');
    },
  },
 
</script>


以下是使用 Vue 3 的 Composition API 对输入框进行格式化的代码示例: ```vue <template> <div> <label for="phone">Phone:</label> <input id="phone" v-model="formattedPhone" @input="onPhoneInput" /> </div> </template> <script lang="ts"> import { ref, watch } from 'vue'; export default { setup() { const phone = ref(''); const formattedPhone = ref(''); const formatPhone = (value: string) => { const regex = /^(\d{0,3})(\d{0,3})(\d{0,4})$/; const match = value.match(regex); if (match) { formattedPhone.value = `(${match[1]}) ${match[2]}-${match[3]}`; } else { formattedPhone.value = value; } }; const onPhoneInput = (event: InputEvent) => { const target = event.target as HTMLInputElement; const value = target.value.replace(/\D/g, ''); phone.value = value; }; watch(phone, (value: string) => { formatPhone(value); }); return { phone, formattedPhone, onPhoneInput, }; }, }; </script> ``` 解释一下: - 我们使用 Vue 3 的 Composition API 来编组件。 - `phone` 和 `formattedPhone` 都是响应式变量,分别保存未格式化格式化后的电话号码。 - `formatPhone` 函数接受一个字符串参数 `value`,将其格式化为 `(xxx) xxx-xxxx` 的电话号码,并将其保存在 `formattedPhone` 变量。 - 正则表达式 `^(\d{0,3})(\d{0,3})(\d{0,4})$` 匹配一个最多十位数字的电话号码,其: - `^` 表示字符串的开始。 - `(\d{0,3})` 表示一个至多三位数字的组。 - `(\d{0,3})` 表示另一个至多三位数字的组。 - `(\d{0,4})` 表示一个至多四位数字的组。 - `$` 表示字符串的结尾。 - 如果 `value` 符合正则表达式的格式,则使用 `match` 方法将其分成三个组,并返回格式为 `(xxx) xxx-xxxx` 的电话号码。 - 如果 `value` 不符合正则表达式的格式,则将其保存在 `formattedPhone` 变量。 - `onPhoneInput` 函数接受一个 `InputEvent` 参数 `event`,将输入框的值 `value` 替换为仅包含数字的字符串,并将其保存在 `phone` 变量。 - `watch` 函数监听 `phone` 变量的变化,并在变化时调用 `formatPhone` 函数来格式化电话号码。 - 最后,在模板使用 `v-model` 指令将 `formattedPhone` 绑定到输入框上,并使用 `@input` 事件监听输入框的输入。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值