前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >vue2.0 组件通信

vue2.0 组件通信

作者头像
用户1197315
发布2018-01-22 12:03:13
5230
发布2018-01-22 12:03:13
举报
文章被收录于专栏:柠檬先生柠檬先生

组件通信:     子组件要想拿到父组件数据 props     子组件不允许直接给父级的数据, 赋值操作如果想更改,父组件每次穿一个对象给子组件,     对象之间引用。

    例子:

代码语言:js
复制
      <script>
                window.onload=function(){
                        new Vue({
                              el:'#box',
                              data:{
                                    giveData:{
                                            a:'我是父组件数据'
                                      }
                                },
                              components:{
                                    'child-com':{
                                          props:['msg'],
                                          template:'#child',
                                          methods:{
                                                  change(){
 
                                                        this.msg.a='被改了';
                                                    }
                                              }  
                                        }
                                  }
                             });
                      };
          </script>
      <template id="child">
                  <div>
                        <span>我是子组件</span>
                        <input type="button" value="按钮" @click="change">
                        <strong>{{msg.a}}</strong>
                  </div>
          </template>
          <div id="box">
                  父级: ->{{giveData.a}}
                <br>
                <child-com :msg="giveData"></child-com>
          </div>

  例子:自定义事件

代码语言:js
复制
   <script>
            //准备一个空的实例对象
            var Event=new Vue();
              var A={
                      template:`
                                <div>
                                      <span>我是A组件</span> -> {{a}}
                                      <input type="button" value="把A数据给C" @click="send">
                                </div>
            `              ,
                          methods:{
                                  send(){
                                          Event.$emit('a-msg',this.a);
                                }
                      },
                      data(){
                              return {
                                    a:'我是a数据'
                              }
                        }
                };
              var B={
                        template:`
                                  <div>
                                          <span>我是B组件</span> -> {{a}}
                                          <input type="button" value="把B数据给C" @click="send">
                                  </div>
                          `,
                        methods:{
                                send(){
                                        Event.$emit('b-msg',this.a);
                                }
                        },
                      data(){
                            return {
                                    a:'我是b数据'
                              }
                      }
                };
              var C={
                    template:`
                              <div>
                                    <h3>我是C组件</h3>
                                    <span>接收过来的A的数据为: {{a}}</span>
                                    <br>
                                    <span>接收过来的B的数据为: {{b}}</span>
                              </div>
                        `,
                        data(){
                              return {
                                      a:'',
                                      b:''
                                }
                         },
                      mounted(){
                                //var _this=this;
                                //接收A组件的数据
                                Event.$on('a-msg',function(a){
                                          this.a=a;
                                }.bind(this));
                                //接收B组件的数据
                                Event.$on('b-msg',function(a){
                                          this.b=a;
                                  }.bind(this));
                            }
                    };

                window.onload=function(){
                          new Vue({
                                  el:'#box',
                                  components:{
                                            'com-a':A,
                                            'com-b':B,
                                            'com-c':C
                                  }
                          });
                };
        </script>
<body>
       <div id="box">
              <com-a></com-a>
              <com-b></com-b>
              <com-c></com-c>
      </div>
</body>
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-05-09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档