您好,登錄后才能下訂單哦!
兄弟組件之間互相傳值,需要建立一個“中轉站”(新的vue實例),并且需要主動觸發。
實例上的$on方法來接受監聽。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>組件傳值</title> <script src="vue.js"></script> </head> <body> <div id="box"> <child1></child1> <child2></child2> </div> <template id="c1"> <h2>~~~~~~我是哥哥~~~~{{msg}} <button @click='fn'>點擊</button></h2> </template> <template id="c2"> <h4>~~~~~~我是弟弟~~~~{{msg2}}</h4> </template> </body> </html> <script> var Hub=new Vue(); // 1) 中轉站,其中不需要設置任何參數 var vm=new Vue({ el: '#box', components:{ child1:{ template:'#c1', data:function(){ return { msg: 'hello' } }, methods:{ fn:function(){ // 2) 主動觸發監聽(中轉站觸發監聽) console.log(this.msg); //hello Hub.$emit('change',this.msg) //$emit觸發監聽方法 } } }, child2:{ template:'#c2', data:function(){ return { msg2: 'world' } }, // 創建完成 new Vue create mount // 鉤子函數 created(){ // 3) 接收監聽 $on('事件名稱',function(val){}) val是傳遞過來的值 Hub.$on('change',function(val){ console.log(val) //hello // this.msg2 = val; }) } } } }) </script>
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。