Mohammad
2 سال پیش توسط 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


ثبت پرسش جدید

به همدیگه کمک کنیم

به Mohammad کمک کنید تا مشکل خودش را حل کند؛ این‌طور می‌توانیم با هم پیشرفت کنیم.

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام