解决element日期组件清空后的报错,让你的页面不再崩溃

本文介绍了解决日期选择器在清空后导致的报错问题,提供了四种有效方案,包括使用三目运算符、Array.isArray方法、绑定change事件及重新赋值等技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

日期组件在网页开发中是一个非常常用的功能,但是在使用过程中可能会遇到一些问题。其中一个比较常见的问题就是在清空日期组件后会出现报错的情况。这个问题不仅会影响网页的正常运行,还会给开发者带来不必要的麻烦。那么,如何解决这个问题呢?本文将为大家介绍几种解决方案,让你的日期组件更加稳定可靠,让用户的使用体验更加完美!


错误截图

在这里插入图片描述


原因分析

经过排查,我发现出现这种问题是因为当我们清空日期时,v-model 绑定的 value 值会从有值变成一个 null 值,因此控制台才会报错。


解决方案

经过上面的分析,现在我们已经知道为什么会报这个错,剩下我们要做到的就是解决这个问题,下面教大家几个简单的方法解决此问题,具体实现代码如下:


html 页面

<template>
  <div>
    <el-date-picker :default-time="['00:00:00', '23:59:59']" v-model="timeDate" type="datetimerange" range-separator="至"
      start-placeholder="开始日期" end-placeholder="结束日期" value-format="yyyy-MM-dd HH:mm:ss">
    </el-date-picker>
    <el-button type="primary" @click="saarchOn">查询</el-button>
  </div>
</template>

data 数据

data() {
  return {
    timeDate: [],//绑定model
    data: {
      kssj: "",//开始时间
      jssj: "",//结束时间
    },
  };
},

1. 三目运算符

methods 方法代码

saarchOn() {
  this.data.kssj = this.timeDate && this.timeDate.length >= 2 ? this.timeDate[0] : null;
  this.data.jssj = this.timeDate && this.timeDate.length >= 2 ? this.timeDate[1] : null;
  console.log(this.data);
},

2. Array.isArray

methods 方法代码

//查询点击事件
saarchOn() {
  //通过判断v-model绑定的值,必须是一个Array值且必须有两条值
  //Array.isArray用于检测一个对象是否为数组
  if (this.timeDate && Array.isArray(this.timeDate) && this.timeDate.length == 2) {
    this.data.kssj = this.timeDate[0];
    this.data.jssj = this.timeDate[1];
  } else {
    this.data.kssj = ""
    this.data.jssj = ""
  }
  console.log(this.data);
},

3. 组件绑定 change 事件

<el-date-picker></el-date-picker> 绑定 change 事件

<el-date-picker :default-time="['00:00:00', '23:59:59']" v-model="timeDate" type="datetimerange" range-separator="至"
  start-placeholder="开始日期" end-placeholder="结束日期" value-format="yyyy-MM-dd HH:mm:ss" @change="changeValue">
</el-date-picker>

methods 方法代码

//组件的 chang 事件
changeValue(val) {
  if (val) {
    this.data.kssj = val[0];
    this.data.jssj = val[1];
  } else {
    this.data.kssj = "";
    this.data.jssj = "";
  }
},
// 查询点击事件
saarchOn() {
  console.log(this.data);
},

4. 调用之前将绑定的 model 重新赋值

methods 方法代码

//查询点击事件
saarchOn() {
  if (!this.timeDate) {
    this.timeDate = [];
    this.data.kssj = "";
    this.data.jssj = "";
  } else {
    this.data.kssj = this.timeDate[0];
    this.data.jssj = this.timeDate[1];
  }
  console.log(this.data);
},

实现效果

在这里插入图片描述
至此,问题也就解决啦。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

水星记_

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

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

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

打赏作者

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

抵扣说明:

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

余额充值