سلام
دوتا کامپوننت ویو دارم که از فرزند به پدر می خوام یک emit رو ارسال کنم و قبل از ارسال می خوام اعتبار سنجی انجام بدم اگر اعتبار سنجی رد شد می خوام emit به پدر ارسال نشه ولی این اتفاق میوفته
کد کامپوونت پدر
<script >
import countBtnVue from './components/count-btn.vue';
export default {
data(){
return {
name : null,
};
},
components : {
countBtnVue,
},
methods: {
GetEmail(email){
if(confirm('ایا مایل هستید ایمیل از فرزند به نام امیت را به عنوان نام در نظر بگیرید')){
this.name = email;
}
}
}
}
</script>
<template>
<input type="text" v-model="name">
<br>
<countBtnVue :mycustomtitle="title" :name="name" @ksdhbfsdf="GetEmail"></countBtnVue>
</template>
کد کامپوننت فرزند
<template>
<button v-on:click="AddToNumber">click me {{ number }}</button>
<input type="text" v-model="email">
<button v-on:click="SendEmail">send email to parent with emit</button>
</template>
<script>
export default {
data(){
return {
number : 0,
email : '',
};
},
emits : {
'ksdhbfsdf' : (email , number) => {
// console.log(email.length , number.length)
if(email.length > 5 ){
return true
}else{
alert('ایمیل باید حداقل 5 کاراکتر و عدد هم فرد باشد');
return false
}
}
},
props : {
'name' : {
type : String,
default : 'default value'
},
'mycustomtitle' : String
},
methods :{
AddToNumber(){
this.number ++ ;
},
SendEmail(){
this.$emit('ksdhbfsdf' , this.email , this.number);
}
}
}
</script>
طبق داکیومنت ویو تو اعتبار سنجی emit باید true یا false
return کنیم وقتی اعتبار سنجی رد میشه alert میدم و اون رو نشون میده
تو console این چاپ میشه
vue.js?v=b992e48e:1272 [Vue warn]: Invalid event arguments: event validation failed for event "ksdhbfsdf".
ولی از ارسال emit جلوگیری نمیکنه و
این قسمت از کد پدر اجرا میشه
GetEmail(email){
if(confirm('ایا مایل هستید ایمیل از فرزند به نام امیت را به عنوان نام در نظر بگیرید')){
this.name = email;
}
}
چطور بعد از اعتبار سنجی emit از ارسال اون جلوگیری کنم ؟
@hesammousavi
@mhyeganeh
@ali.bayat
@milad
به Mohammad کمک کنید تا مشکل خودش را حل کند؛ اینطور میتوانیم با هم پیشرفت کنیم.
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟