国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

vue實現的組件兄弟間通信功能示例

2019-11-19 12:24:46
字體:
來源:轉載
供稿:網友

本文實例講述了vue實現的組件兄弟間通信功能。分享給大家供大家參考,具體如下:

兄弟組件間通信(event)

借助于一個公共的Vue的實例對象,不同的組件可以通過該對象完成事件的綁定和觸發

var bus = new Vue();bus.$emit()bus.$on()

熊大想要發消息給熊二,

接收方(熊二):事件綁定

bus.$on('customEvent',function(msg){//msg就是通過事件 傳遞來的數據})

發送方(熊大):觸發事件

bus.$emit('customEvent',123);

練習:

在熊二中 加上一個button,
點擊按鈕時告訴熊大:'快跑!'

接收方:事件綁定
發送方:觸發事件

<!doctype html><html> <head> <meta charset="UTF-8"> <title></title>  <script src="https://cdn.bootcss.com/vue/2.0.1/vue.min.js"></script> </head> <body> <div id="container">    <p>{{msg}}</p>    <xiongda></xiongda>    <hr>    <xionger></xionger>  </div>  <script>/*借助于一個公共的Vue的實例對象,不同的組件可以通過該對象完成事件的綁定和觸發*///new一個對象,兄弟間的通信,將借助他事件綁定和觸發來實現  var bus = new Vue();  //熊大發送消息給熊二    //xiongda組件    Vue.component("xiongda",{      methods:{        sendToXiongEr:function(){        //給熊二發送消息        //觸發msgToXiongEr事件          bus.$emit("msgToXiongEr","哈哈,光頭強來了");        }      },      template:`        <div>          <h1>我是熊大</h1>          <button @click="sendToXiongEr">Click Me</button>        </div>      `    })//熊二組件    Vue.component("xionger",{      template:`        <div>          <h1>我是熊二</h1>        </div>      `,      mounted:function(){//      給該組件綁定一個自定義事件和對應的處理函數        //調用bus中的on方法        //事件的觸發一般是接收數據然后處理        var that = this;          bus.$on("msgToXiongEr",function(msg){            alert("自定義的事件觸發,接收到的數據"+msg);          })      }    })    new Vue({      el:"#container",      data:{        msg:"Hello VueJs"      }    })  </script> </body></html>

使用在線HTML/CSS/JavaScript代碼運行工具http://tools.VeVB.COm/code/HtmlJsRun測試,可得到如下運行效果:

改版:熊大在input輸入數據傳遞給熊二

<!doctype html><html> <head> <meta charset="UTF-8"> <title></title>  <script src="https://cdn.bootcss.com/vue/2.0.1/vue.min.js"></script> </head> <body> <div id="container">    <p>{{msg}}</p>    <xiongda></xiongda>    <hr>    <xionger></xionger>  </div>  <script>/*借助于一個公共的Vue的實例對象,不同的組件可以通過該對象完成事件的綁定和觸發*///new一個對象,兄弟間的通信,將借助他事件綁定和觸發來實現  var bus = new Vue();  //熊大發送消息給熊二    //xiongda組件    Vue.component("xiongda",{      data:function(){        return {          xiongDaInput:""        }      },      methods:{        sendToXiongEr:function(){        //給熊二發送消息        //觸發msgToXiongEr事件          bus.$emit("msgToXiongEr",this.xiongDaInput);          this.xiongDaInput = "";        }      },      template:`        <div>          <h1>我是熊大</h1>          <input type="text" v-model="xiongDaInput"/>          <button @click="sendToXiongEr">Click Me</button>        </div>      `    })//熊二組件    Vue.component("xionger",{      data:function(){        return{          recvMsgIs:[]        }      },      template:`        <div>          <h1>我是熊二</h1>          <p v-for="tmp in recvMsgIs">{{tmp}}</p>        </div>      `,      mounted:function(){//      給該組件綁定一個自定義事件和對應的處理函數        //調用bus中的on方法        //事件的觸發一般是接收數據然后處理        var that = this;          bus.$on("msgToXiongEr",function(msg){            //alert("自定義的事件觸發,接收到的數據"+msg);              that.recvMsgIs.push(msg);          })      }    })    new Vue({      el:"#container",      data:{        msg:"Hello VueJs"      }    })  </script> </body></html>

感興趣的朋友還可以使用在線HTML/CSS/JavaScript代碼運行工具http://tools.VeVB.COm/code/HtmlJsRun測試上述代碼的運行效果。

希望本文所述對大家vue.js程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 汝南县| 孟连| 乐山市| 贵港市| 上饶市| 资溪县| 蓝山县| 昭通市| 称多县| 信阳市| 旺苍县| 陕西省| 共和县| 乃东县| 边坝县| 沂水县| 诏安县| 泰顺县| 南安市| 会同县| 临湘市| 塔河县| 郴州市| 吉隆县| 永定县| 宣武区| 胶州市| 子长县| 调兵山市| 怀仁县| 苍南县| 垫江县| 萨嘎县| 大新县| 剑川县| 互助| 双江| 揭西县| 奇台县| 三穗县| 贵定县|