獨立組件之間數據交互:通過自定義事件
組件A中的【數據】,傳遞給組件B
1.創建組件A,組件B
2.組件B在實例創建完成時就開始監聽事件【等待接收數據】:鈎子
3.組件A中觸發事件,發送數據
注意:接收數據的函數,一定要綁定在生命周期創建鈎子上(created:function(){})
1、引入相應的文件
<script src="https://unpkg.com/vue/dist/vue.js"></script> <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
2、Dom文件
<div id="app"> <comp-a></comp-a> <comp-b></comp-b> </div>
3、js的相關內容
1 <script> 2 Vue.component("compA", { 3 template:"<button @click='test'>組件A中,觸發事件</button>", 4 methods:{ 5 test:function() { 6 bus.$emit("myevent", this.username);//$emit("事件名稱",[參數列表])通過$emit在代碼中觸發一個事件 7 } 8 }, 9 data:function() { 10 return { 11 username:"jerry" 12 } 13 } 14 }); 15 Vue.component("compB", { 16 template:"<h2>{{ds}}</h2>", 17 created:function() {/*這是實例創建完成時自動調用的生命周期鈎子*/ 18 var that = this; 19 bus.$on("myevent", function(msg) {//通過$on("事件名稱",function(參數列表){})來監聽一個事件是否進行處理 20 // 接收到數據之后,就可以更新組件中使用的數據,然后展示到頁面上 21 console.log("接收到其他組件傳遞的數據:" + msg); 22 that.ds = msg; 23 }); 24 }, 25 data:function() { 26 return { 27 ds:"hello" 28 } 29 } 30 }); 31 32 /*定義一個消息分發中間件*/ 33 var bus = new Vue(); 34 35 var vm = new Vue({ 36 el:"#app" 37 }); 38 </script>