国产探花免费观看_亚洲丰满少妇自慰呻吟_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程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 台前县| 乾安县| 湾仔区| 资溪县| 海南省| 新宾| 新郑市| 元氏县| 宁化县| 从化市| 茌平县| 濮阳市| 靖西县| 内乡县| 宁国市| 红安县| 吉林市| 布尔津县| 南涧| 乐安县| 孝感市| 汾阳市| 张家港市| 新津县| 北川| 印江| 都兰县| 嘉定区| 红原县| 鄂尔多斯市| 丰顺县| 儋州市| 辽源市| 永善县| 芦溪县| 南部县| 湟中县| 灵寿县| 买车| 洪泽县| 大余县|