el-date-picker 中 type=“monthrange“ 时默认值设定及返回类型解决办法

今天在做查询功能时,条件中有一个起止年月,需要默认设定为上个月的值

<el-date-picker
  v-model="value1"
  type="monthrange"
  range-separator="至"
  value-format="yyyy-MM-01 HH:mm:ss"
  start-placeholder="开始月份"
  end-placeholder="结束月份">
</el-date-picker>

由于组件设定了value-format,指定了绑定值的格式,所以想当然的使用此格式设定默认值

mounted () {
    this.value1 = ['2023-01-01 00:00:00', '2023-03-31 23:59:59']
},
watch() {
    'value1' (val) {
      console.log(`-----watch 监听------ value1`, val)
    },
}

结果设定无效果,虽然值正确,但是组件中没有显示。

经过多种尝试,看API等,最终使用下面的设定方法,搞定了页面正确显示的问题。

mounted () {
    const beforeDate = new Date()
    beforeDate.setMonth(beforeDate.getMonth() - 1)
    beforeDate.setDate(1)
    beforeDate.setHours(0, 0, 0, 0)
    const endDate = new Date()
    endDate.setMonth(beforeDate.getMonth())
    endDate.setDate(28)
    endDate.setHours(23, 59, 59, 999)
    this.value1 = [beforeDate, endDate]
},
watch() {
    'value1' (val) {
      console.log(`-----watch 监听------ value1`, val)
    },
}

此时虽然页面显示正确,但是组件默认获取的值却不再是value-format样式的字符串格式,变成了日期对象,手动选择后又恢复到value-format样式的字符串格式。

造成默认值搜索时传递数据格式错误,最后手工在watch 中对值进行监听,格式化。

不知道是不是我用法有错误,还是这个组件有BUG。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 这是一段 Vue.js 的代码,它用于创建一个日期选择器,其的 v-model 绑定了选择的日期到 "date" 这个变量。type 设置为 "daterange" 表示这是一个日期范围选择器,range 设置为 "month" 表示只能选择月份。 如果这个日期选择器没有生效,那可能是因为你没有正确地引入组件或者绑定数据有问题。你可以检查一下是否有报错,并尝试调整你的代码。 ### 回答2: 根据给出的代码,问题出在range属性的使用上。 首先要注意到,<el-date-picker>是Element UI的日期选择器组件,v-model是用来绑定选择的日期数据的。type属性设置为"daterange"表示选择范围内的日期,而range属性设置为"month"表示选择的范围为整个月份。 如果<el-date-picker>组件没有显示出来或没有选择日期的效果,可能是以下原因之一: 1. 未导入Element UI或未正确引入相关的CSS和JS文件; 2. 未正确设置Vue实例的组件数据,即在data选项添加了date属性并设置默认值; 3. 没有正确放置<el-date-picker>组件的HTML代码,即没有在Vue实例对应的HTML模板添加<el-date-picker>组件。 为了解决这些问题,可以按照以下步骤进行调整: 1. 确保已经正确导入Element UI并引入相关的CSS和JS文件。 2. 在Vue实例的data选项添加一个名为date的属性,并设置默认值,例如:date: ''。 3. 在Vue实例对应的HTML模板添加<el-date-picker>组件的代码,确保放置在适当的位置,并使用v-model指令将date属性绑定到组件上,例如:<el-date-picker v-model="date" type="daterange" range="month"></el-date-picker>。 如果问题仍然存在,请确保您的项目包含了Element UI,并且根据官方文档进一步调试查找原因。 ### 回答3: 在使用`<el-date-picker v-model="date" type="daterange" range="month" />`出现没有效果的问题可能是由于以下几个原因导致的: 1. Vue和Element UI库是否正确引入:首先要确保Vue和Element UI库已经被正确引入到项目。可以在代码查看是否有相关的引入语句`import Vue from 'vue'`和`import ElementUI from 'element-ui'`。同还要确保相关依赖已经安装,例如通过`npm install element-ui --save`方式安装Element UI。 2. 组件是否正确注册:在使用Element UI的组件之前,需要先在Vue进行组件的注册。可以在代码查看是否有相关的组件注册语句`Vue.use(ElementUI)`。 3. 是否正确使用`v-model`指令:`v-model`是Vue的指令,它实现了双向绑定的功能。在使用`v-model`指令,需要确保`date`属性在Vue的实例正确初始化且正确绑定到相应的日期选择器上。可以在Vue的实例查看是否有正确的`data`选项和`date`属性的初始化语句,例如`data: { date: '' }`。 4. 是否正确设置`type`和`range`属性:`type`属性用于指定日期选择器的类型,而`range`属性用于指定日期选择的范围。在上述代码,`type`被设置为`daterange`,表示选择的是一个日期范围,而`range`被设置为`month`,表示选择的是月份范围。需要确保这两个属性被正确设置。 综上所述,检查以上几个可能的原因,进行相应的修改和调试,通常能够解决`<el-date-picker v-model="date" type="daterange" range="month" />`没有效果的问题。如果以上方法无法解决问题,可能需要进一步检查代码的其它部分或查看Element UI官方文档以获取更多信息和帮助。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值