Mohammad
3 سال پیش توسط Mohammad مطرح شد
0 پاسخ

چطور از اجرای کد vue بعد از اعتبار سنجی جلوگیری کنیم

سلام
دوتا کامپوننت ویو دارم که از فرزند به پدر می خوام یک 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