DateTimePicker 日期时间选择器报错 Cannot read property ‘getHours‘ of undefined, 无法选中`[__ob_: observer__]`时做判断

我在一次开发中遇到了这个情况:使用DateTimePicker 日期时间选择器,出现无法选中,
DateTimePicker 日期时间选择器报错 Cannot read property ‘getHours‘ of undefined, 无法选中`[__ob_: observer__]`时做判断_第1张图片

报错 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 一些遇到的其他问题合集: 传送门

你可能感兴趣的:(element,vue,javascript,前端,vue.js,html,html5)