отправка данных от chiled к родителю с использованием vue. js и laravel - PullRequest
0 голосов
/ 20 марта 2020

я новичок в vue.js у меня есть тестовый компонент дочерний, а компонент showdata является родительским. Моя проблема возникает, когда я передаю данные от дочернего к родительскому, он отправляется успешно, но когда я показываю данные в родительском элементе с помощью @click="showusersdata1(listdata.id), я получаю пустые данные как прикрепленное изображение, так как показать пользовательские данные, вот мой код showdata. vue

<template>
        <div>


            id={{setUserData.id}},
            name={{setUserData.name}}
            email={{setUserData.email}}
            <test v-on:showusersdata1="userData($event)"></test>


        </div>
</template>


<script>

    import MyHome from "./home";
   // let Test=require('./components/test.vue').default
    import test from "./test"
    export default {

        // components: {MyHome},
        name: "showData",
        data:function () {
            return{
                setUserData:{}
            }
        },
        components:{
            test

        },
        methods:{
            userData:function (passedata) {
            console.log(passedata)
           //  this.setUserData={}
                this.setUserData= this.setUserData.push(passedata)

            }
        }
    }
</script>

test. vue

<template>
    <div  class="row">
        <div class="col-8">
<h1>this is test components1</h1>
            <!-- List group -->
            <div class="input-group mb-3">
                <input type="text" class="form-control" placeholder="Recipient's username" aria-label="Recipient's username" aria-describedby="button-addon2">
                <div class="input-group-append">
                    <button class="btn btn-outline-secondary" type="button" id="button-addon2">Button</button>
                </div>
            </div>
            <div class="list-group" id="myList" role="tablist">

                <a  v-for  ="(listdata,key) in list"  class="list-group-item list-group-item-action  active" data-toggle="list" href="#home" role="tab">
                    <ul class="test">
                        <i class="fas fa-trash" aria-hidden="true"></i>
                        <i class="fas fa-edit"></i>
                        <i  @click="showusersdata1(listdata.id)" class="fas fa-eye"></i>
                    </ul> {{listdata.name}}</a>



            </div>


        </div>
        <h1>this is cchiled show data coponent</h1>


    </div>

</template>


<script>





    import ShowData from "./showdata";

    export default {

        name: "Test",
        components:{
            ShowData

        },
        data: function () {
            return {
                list:{},
                errors:{},


            }
        },

        mounted(){
            axios.post('/getAllData')
                // .then((response) =>this.list=response.data )
                .then((response) =>{
                    this.list=response.data

                } )

                .catch((error) =>this.errors=error.response.data.errors )

        },
        methods:{
            showusersdata1:function (key) {
              var index = this.list.find( ({ id }) => id == key );

                this.$emit('userData', index)
            }
        }




    }
</script>
<style scoped>
    .test{
        float:right
    }
</style>

1 Ответ

0 голосов
/ 20 марта 2020

Вы излучаете здесь:

this.$emit('userData', index)

Это означает, что название вашего мероприятия 'userData'. Это то, что вы должны слушать в родительском. Но если вы проверяете своего родителя, вы слушаете событие следующим образом:

v-on:showusersdata1="userData($event)"

Это означает, что вы пытаетесь прослушать событие 'showusersdata1', которое не сработало. Вы путаете имя метода вашего ребенка с именем вашего события . Вместо того, что вы сделали, вы можете прослушивать ваше событие следующим образом:

v-on:userData="userData"

Это также своего рода соглашение о присвоении имен слушателям событий, добавляя перед ними «on», пример:

  • имя события 'userDataReceived'
  • прослушиватель событий будет onUserDataReceived
...