組件A里包含組件B,組件B里包含組件C,組件C的值要傳值給組件A,那么就要用$listeners傳值。
$listeners跟子傳父差不多
1.在孫組件里定義事件,通過$emit把值傳出去。
<template> <div> <button @click="trans()">傳值</button> </div> </template> <script> export default { name: "Child", data () { return { cdata:"孫組件" }; }, methods: { trans(){ this.$emit('test',this.cdata) } }, } </script>
2.在子組件中定義v-on="$listerners"
<child v-on="$listeners"></child>
3.父組件通過傳過來的自定義事件,獲取孫組件的值
<template> <div id="app"> <HelloWorld @test="getValue($event)"/> </div> </template> <script> import HelloWorld from './components/HelloWorld' export default { name: 'App', components: { HelloWorld }, data(){ return { hello:"hello" } }, methods: { getValue(val){ console.log(val); // val就是孫組件傳過來的 this.hello = val } }, } </script>