vuejs2 - 无法读取 null 的属性“getHours”
问题描述
我正在关注这个 vue/vuex/firebase 教程https://www.youtube.com/watch?v=fls6uX7WWSs&list=PL55RiY5tL51qxUbODJG9cgrsVd7ZHbPrt&index=21,我目前坚持使用 vuetify 日期和时间选择器。我不断收到此错误 [Vue 警告]:渲染错误:“TypeError:无法读取属性 'getHours' of null”
我已经尝试了在这里和其他地方发布的几种解决方案,例如使用 .toISOString().substr(0, 10) 将日期和时间转换为字符串,我收到此错误 [Vue warn]: Error in render: "TypeError: Cannot读取 null 的属性 '1'"
<template>
<v-container>
<v-layout row>
<v-flex xs12 sm6 offset-sm3>
<h4>Create a new Meetup</h4>
</v-flex>
</v-layout>
<v-layout row>
<v-flex xs12>
<form @submit.prevent="onCreateMeetup">
<v-layout row>
<v-flex xs12 sm6 offset-sm3>
<v-text-field name="title" label="Title" id="title" v-model="title" required></v-text-field>
</v-flex>
</v-layout>
<v-layout row>
<v-flex xs12 sm6 offset-sm3>
<v-text-field
name="location"
label="Location"
id="location"
v-model="location"
required
></v-text-field>
</v-flex>
</v-layout>
<v-layout row>
<v-flex xs12 sm6 offset-sm3>
<v-btn raised class="primary" @click="onPickFile">Upload Image</v-btn>
<input
type="file"
style="display: none"
ref="fileInput"
accept="image/*"
@change="onFilePicked"
>
</v-flex>
</v-layout>
<v-layout row>
<v-flex xs12 sm6 offset-sm3>
<img :src="imageUrl" height="150">
</v-flex>
</v-layout>
<v-layout row>
<v-flex xs12 sm6 offset-sm3>
<v-textarea
name="description"
label="Description"
id="description"
v-model="description"
required
></v-textarea>
</v-flex>
</v-layout>
<v-layout row>
<v-flex xs12 sm6 offset-sm3>
<h4>Choose a Data & Time</h4>
</v-flex>
</v-layout>
<v-layout row class="mb-2">
<v-flex xs12 sm6 offset-sm3>
<v-date-picker color="primary" v-model="date"></v-date-picker>
<p>{{date}}</p>
</v-flex>
</v-layout>
<v-layout row>
<v-flex xs12 sm6 offset-sm3>
<v-time-picker color="primary" v-model="time"></v-time-picker>
<p>{{time}}</p>
</v-flex>
</v-layout>
<v-layout row>
<v-flex xs12 sm6 offset-sm3>
<v-btn class="primary" :disabled="!formIsValid" type="submit">Create Meetup</v-btn>
<p>{{submittableDateTime}}</p>
</v-flex>
</v-layout>
</form>
</v-flex>
</v-layout>
</v-container>
</template>
<script>
export default {
data() {
return {
title: "",
location: "",
imageUrl: "",
description: "",
date: new Date().toISOString().substr(0, 10),
time: new Date().toISOString().substr(0, 10),
image: null
}
},
computed: {
formIsValid() {
return (
this.title !== "" &&
this.location !== "" &&
this.imageUrl !== "" &&
this.description !== ""
)
},
submittableDateTime() {
const date = new Date(this.date)
if (typeof this.time === "string") {
let hours = this.time.match(/^(\d+)/)[1]
const minutes = this.time.match(/:(\d+)/)[1]
date.setHours(hours)
date.setMinutes(minutes)
} else {
date.setHours(this.time.getHours())
date.setMinutes(this.time.getMinutes())
}
return date
}
},
methods: {
onCreateMeetup() {
if (!this.formIsValid) {
return
}
if (!this.image) {
return
}
const meetupData = {
title: this.title,
location: this.location,
image: this.image,
description: this.description,
date: this.submittableDateTime
}
this.$store.dispatch("createMeetup", meetupData)
this.$router.push("/meetups")
},
onPickFile() {
this.$refs.fileInput.click()
},
onFilePicked(event) {
const files = event.target.files
let filename = files[0].name
if (filename.lastIndexOf(".") <= 0) {
return alert("Please add a valid file!")
}
const fileReader = new FileReader()
fileReader.addEventListener("load", () => {
this.imageUrl = fileReader.result
})
fileReader.readAsDataURL(files[0])
this.image = files[0]
}
}
}
</script>
我想要一种可以提交到 firebase 的格式,例如来自 submittableDateTime 计算函数的 2019-02-18T23:20:38.950Z。谢谢你的暂停!
解决方案
你不能传递一个像2019-01-01
to这样的字符串v-time-picker
。它应该是一个Date
对象
您可以更改您的初始化数据
data() {
return {
title: "",
location: "",
imageUrl: "",
description: "",
date: new Date().toISOString().substr(0, 10),
time: new Date(),
image: null
}
}
推荐阅读
- javascript - 如何在没有 cookie 的会话中仅显示一次警报信息框
- typescript - 防止事件更改选项卡
- python - while循环中的变量在for循环后不递增
- python - AWS DynamoDB 为小于 400KB 的项目设置项目大小限制例外
- php - 我想获取为特定链接投票的用户列表
- c# - Azure HTTP 功能无法发布
- camera - 使用 v4l2 自动对焦后获取焦点位置
- r - 有谁知道如何解决这个 Hmisc 错误?
- gradle - Gradle 构建不会生成 jar
- symfony - 当我想安装friendsofsymfony / elastica-bundle时作曲家出错