问题描述
使用el-date-picker组件,默认带了clearable
这个属性,这个属性是用于显示清除按钮,我们点击这个按钮,控制台会报如下错误:
我们的代码如下:
<el-form-item label="统计周期" class="filter-item selectDate">
<el-date-picker
v-model="cycleTime"
type="daterange"
start-placeholder="开始日期"
end-placeholder="结束日期"
value-format="yyyy-MM-dd"
@change="handleCycleTime">
</el-date-picker>
</el-form-item>
<script>
export default() {
data() {
return {
cycleTime: []
}
},
methods: {
handleCycleTime(date) {
this.queryForm.beginDate = date[0];
this.queryForm.endDate = date[1];
}
}
}
</script>
问题产生的原因
在我们选择日期范围之前,我们定义的cycleTime
是一个空的数组;在我们选择日期范围之后,我们通过watch
监听一下cycleTime
输出的值:null
,这是因为DatePicker
组件中没有清除按钮内置的回调函数。
watch: {
cycleTime(val) {
console.log('cycleTime的值为:', val) // 控制台打印出来的内容:cycleTime的值为: null
}
}
解决方法
可以在DatePicker
组件的change
事件改变时,先判断cycleTime
有没有值。
// 统计周期
handleCycleTime(date) {
if(!date) {
this.cycleTime = [];
this.queryForm.beginDate = undefined;
this.queryForm.endDate = undefined;
}
}
或者直接这样写:
// 统计周期
handleCycleTime(date) {
this.queryForm.beginDate = date ? date[0] : undefined;
this.queryForm.endDate = date ? date[1] : undefined;
}
此时控制台就不会报错了!!!