博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
vue2.0 组件通信
阅读量:6440 次
发布时间:2019-06-23

本文共 3191 字,大约阅读时间需要 10 分钟。

组件通信:

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

    例子:

      <script>
        window.οnlοad=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>

  例子:自定义事件

    

  <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.οnlοad=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>

转载于:https://www.cnblogs.com/nmxs/p/6831418.html

你可能感兴趣的文章
mac本显示隐藏文件或关闭显示隐藏文件
查看>>
spring4.0 整合 Quartz 实现任务调度(一)
查看>>
android复杂布局的一点思路
查看>>
Awesome Python
查看>>
java web简单权限管理设计
查看>>
Google Analytics
查看>>
【转】什么是云计算
查看>>
MySQL 5.7及以上解压缩版本配置安装
查看>>
Extjs4.0 Chart属性中文解释
查看>>
PHP单例模式的实现
查看>>
httpClient post 数据传输和处理
查看>>
newLISP你也行 --- 字符串
查看>>
【译】Swift 2.0 下面向协议的MVVM架构实践
查看>>
html5拖拽
查看>>
Android工具HierarchyViewer 代码导读(2) -- 建立Eclipse调试环境
查看>>
GC配置对性能的帮助
查看>>
java list按时间倒序、首字母排序
查看>>
hls之m3u8、ts流格式详解
查看>>
中国有望成为全球最大3D打印市场
查看>>
ecshop在其他的页面调用首页的flash主广告的方法
查看>>