我使用:带有TS的Vue3,axios,sequelize。
我正在创建一个只有1个textarea的表单,用来在墙上发布帖子,我用我的组件表单编写了这个脚本:
<template>
<div id="PostText" class="col-12">
<form id="postTextForm">
<div id="PostwriteContent">
<label for="PostContent">
<h2>Lâchez nous vos pensées...</h2>
</label>
<textarea
name="PostContent"
id="PostContent"
cols="65"
rows="6"
v-model="theNewPost.content"
autocapitalize="sentence"
form="postTextForm"
maxlength="650"
placeholder="Saisissez ici votre prose..."
required
autofocus
></textarea>
<button class="col-9" type="button" :disabled="!isFormValid" @click="sendMyPost">Poster</button>
</div>
</form>
</div>
</template>
<script lang="ts">
import axios from 'axios';
export default {
data() {
return {
errorMessage: String,
theNewPost: {
content: String,
userId: Number
}
};
},
methods: {
sendMyPost(e:any){
e.preventDefault();
console.log("testPost >>" + this.theNewPost.content);
console.log("theNewPost >>" + this.theNewPost);
axios.post("http://localhost:3001/api/feed", this.theNewPost)
.then((res) =>{
console.log('Post en ligne ;)' + res)
})
.catch((err) => {
this.errorMessage = err.message;
console.error("There was an error!", err);
})
}
},
computed:{
isFormValid(){
if (
this.theNewPost.content !== ""
) {
return true;
} else {
return false;
}
}
},
};
</script>
但是我在使用“this”的时候有一些错误。它没有找到名称theNewPost,errorMessage,所以我不明白这一点,因为我在数据中定义了这些术语,并在V-model中使用它们。
此外,在我绑定2个函数的表单中,它们不会运行。你知道我犯了哪些错误吗?请。
谢谢;)
发布于 2021-11-06 17:57:45
要使用defineComponent()
包装组件,请使用enable TypeScript support
import { defineComponent } from 'vue'
export default defineComponent({
data() { ... },
methods: { ... },
computed: { ... },
})
还要注意,您的data()
返回应该是文字(而不是初始化为String
或Number
):
data() {
return {
errorMessage: '',
theNewPost: {
content: '',
userId: 0
}
};
}
https://stackoverflow.com/questions/69860365
复制相似问题