我在一次开发中遇到了这个情况:使用DateTimePicker 日期时间选择器,出现无法选中,
报错 Cannot read property ‘getHours’ of undefined,
这个原因是,这个DateTimePicker 日期时间选择器 v-model 绑定的属性对应的数据类型,只能是 String() 类型的,其他数据类型均会报错,我这边是因为接口要求,改成了数组类型,所以报错了。
这是个人的部分代码:
<el-date-picker
v-model="searchForm.inviteTimeList"
type="datetime"
placeholder="选择日期时间"
style="width: 600px"
></el-date-picker>
我个人解决办法: 不要修改其数据类型, 在发送请求前,设置一个变量,把这个值存储到这个变量中,再吧这个变量处理成自己想要的数据类型。
我需要的是数组数据类型,下面贴上我自己的代码
// state.chatSearchForm.inviteTimeList 就是 时间日期选择器 v-model 绑定的值, 数据类型为 String
// Object.prototype.toString.call(inviteTimeListQuery) === '[object Date]' -代表只有选择了时间日期,这个 v-model绑定的属性才会有数据
// [object Date] --这个要根据 选中时间日期时, v-model属性获取到值得数据类型来做判断,如果你获取得时间是 时间戳,这里应该是[object Array] , 我这边获取的 标准日期格式的。
// getTime() 是将标准日期格式处理成 时间戳。这里还有更好的处理方法,但是我懒得写了。
let inviteTimeListQuery = state.chatSearchForm.inviteTimeList || '';
if (Object.prototype.toString.call(inviteTimeListQuery) === '[object Date]') {
inviteTimeListQuery = [inviteTimeListQuery.getTime()];
} else {
inviteTimeListQuery = [];
}
这样就好了,不会报错了,然后把这个inviteTimeListQuery
处理后的值 传给 后端即可。
有时候数据会包含[__ob_: observer__]
这个,想要做判断某个属性是否有值,可以先判断这个值是否存在,再判断这个值的length,这样就可以判断这个属性是否有值。
// 比如我要判断 courseLists这个属性是否有值,有值就要做其他处理,这样写就只有有值时才会进入这个判断
this.searchForm.courseLists && this.searchForm.courseLists.length
elementui 一些遇到的其他问题合集: 传送门