• Vuejs 用$emit 与 $on 来进行兄弟组件之间的数据传输


      1 <!DOCTYPE html>
      2 <html lang="en">
      3 <head>
      4     <meta charset="UTF-8" />
      5     <title>Vue2-单一事件管理组件通信</title>
      6     <script src="vue.js"></script>
      7     <script type="text/javascript">
      8 
      9     //准备一个空的实例对象
     10     var Event = new Vue();
     11 
     12     //组件A
     13     var A = {
     14         template: `
     15             <div>
     16                 <span>我是A组件的数据->{{a}}</span>
     17                 <input type="button" value="把A数据传给C" @click = "send">
     18             </div>
     19         `,
     20         methods: {
     21             send () {
     22                 Event.$emit("a-msg", this.a);
     23             }
     24         },
     25         data () {
     26             return {
     27                 a: "我是a组件中数据"
     28             }
     29         }
     30     };
     31     //组件B
     32     var B = {
     33         template: `
     34             <div>
     35                 <span>我是B组件的数据->{{a}}</span>
     36                 <input type="button" value="把B数据传给C" @click = "send">
     37             </div>
     38         `,
     39         methods: {
     40             send () {
     41                 Event.$emit("b-msg", this.a);
     42             }
     43         },
     44         data () {
     45             return {
     46                 a: "我是b组件中数据"
     47             }
     48         }
     49     };
     50     //组件C
     51     var C = {
     52         template: `
     53             <div>
     54                 <h3>我是C组件</h3>
     55                 <span>接收过来A的数据为: {{a}}</span>
     56                 <br>
     57                 <span>接收过来B的数据为: {{b}}</span>
     58             </div>
     59         `,
     60         mounted () {
     61            //接收A组件的数据
     62            Event.$on("a-msg", function (a) {
     63                 this.a = a;
     64            }.bind(this));
     65 
     66            //接收B组件的数据
     67            Event.$on("b-msg", function (a) {
     68                 this.b = a;
     69            }.bind(this));
     70         },
     71         data () {
     72             return {
     73                 a: "",
     74                 b: ""
     75             }
     76         }
     77     };
     78     window.onload = function () {
     79         new Vue({
     80             el: "#box",
     81             components: {
     82                 "dom-a": A,
     83                 "dom-b": B,
     84                 "dom-c": C
     85             }
     86         });
     87     };
     88 
     89 
     90     </script>
     91 </head>
     92 <body>
     93     <div id="box">
     94         <dom-a></dom-a>      
     95         <dom-b></dom-b>      
     96         <dom-c></dom-c>      
     97     </div>
     98 
     99 </body>
    100 </html>
  • 相关阅读:
    最短路径覆盖问题
    js 程序执行与顺序实现详解
    ajax中的application/x-www-form-urlencoded中的使用[转]
    javascript跨浏览器操作xml
    javascript 正则表达式
    JavaScript面向对象编程(2)-- 类的定义
    JavaScript面向对象编程(1)-- 基础
    constructor、prototype、isPrototypeOf、instanceof、in 、hasOwnProperty
    valueOf()对象返回值
    javascript中的toString()、toLocaleString()方法
  • 原文地址:https://www.cnblogs.com/zsongs/p/6388932.html
Copyright © 2020-2023  润新知