如何解决Vuejs Emailjs Vee-validate 类型错误:无法读取未定义的属性“目标”
当我想使用 emailjs 和 vee-validate 验证和传输我的数据时遇到问题。 当我不使用 vee-validate 时,它会起作用。 你能帮助我吗 ? 谢谢
版本
- vee 验证:3.4.5
- vue: 2.6.6
- emailjs:“^3.4.0”
- emailjs-com:"^2.6.4"
验证提供者
<ValidationObserver v-slot="{handleSubmit}">
<form @submit.prevent="handleSubmit(sendEmail)">
<ValidationProvider
name="nom"
rules="required|alpha_spaces"
v-slot="{ errors }"
>
<base-input
type="text"
v-model="name"
name="name"
class="mt-5"
alternative
placeholder="Votre nom"
addon-left-icon="ni ni-user-run"
>
</base-input>
<span>{{ errors[0] }}</span>
</ValidationProvider>
.....
<base-button
@click="handleSubmit(sendEmail)"
type="pink"
round
block
size="lg"
>
Envoyer le message
</base-button>
</form>
</ValidationObserver>
脚本:
import emailjs from 'emailjs-com'
export default {
name: 'ContactUs',data: () => ({
name: '',email: '',message: '',}),methods: {
sendEmail(e) {
try {
emailjs.sendForm(
'service_xxx','template_xxx',e.target,'user_xxx',{
name: this.name,email: this.email,message: this.message,}
)
} catch (error) {
console.log({ error })
}
alert('Le formulaire a été transmis !')
// Reset form field
this.name = ''
this.email = ''
this.message = ''
},},}
错误:
TypeError: Cannot read property 'target' of undefined at VueComponent.sendEmail
非常感谢您的帮助!
解决方法
handleSubmit
不会将事件参数传递给给定的回调,因此 e
未定义。
您可以使用 template ref 直接引用表单,而不是 e.target
(如果传递事件,它将是表单元素):
<form ref="myForm">
export default {
methods: {
sendEmail() {
try {
emailjs.sendForm(
'service_xxx','template_xxx',this.$refs.myForm,?
'user_xxx',{
name: this.name,email: this.email,message: this.message,}
)
} catch (error) {
console.log({ error })
}
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。