美文网首页
vue 兄弟组件传值的方法

vue 兄弟组件传值的方法

作者: 嗯哼曼 | 来源:发表于2019-05-09 11:05 被阅读0次

    1、兄弟之间传递数据需要借助于事件车,通过事件车的方式传递数据
    2、创建一个Vue的实例,让各个兄弟共用同一个事件机制。
    3、传递数据方,通过一个事件触发bus.$emit(方法名,传递的数据)。
    4、接收数据方,通过mounted(){}触发bus.$on (方法名,function(接收数据的参数){用该组件的数据接收传递过来的数据}),此时函数中的this已经发生了改变,可以使用箭头函数。

    demo 如下:
    首先创建一个单独的js文件bus.js,内容如下

    import Vue from 'vue'
    export default new Vue
    

    父组件如下:

    <template>
         <components-a></components-a>
         <components-b></components-b>
    </template>
    

    子组件a如下:

    <template>
          <div>
               <button @click="abtn">A按钮</button>
          </div>
    </template>
    <script>
    import  from '../../js/bus.js'
    export default {
          name: 'components-a',
          data () {
            return {
                    ‘msg':"我是组件A"
            }
          },
          methods:{
               abtn:function(){
                      let  _this = this;
                       //$emit这个方法会触发一个事件
                       bus .$emit("myFun", _this.msg)  
               }
          }
    }
    </script>
    

    子组件b如下:

    <template>
         <div>
             <div>{{btext}}</div>
         </div>
    </template>
    <script>
    import bus from '../../js/bus.js'
    export default {
       name: 'components-b',
       data () {
            return {
               'btext':"我是B组件内容"
            }
       },
       created:function(){
           this.bbtn();
       },
       methods:{
           bbtn:function(){
                bus .$on("myFun",(message)=>{   
                //这里最好用箭头函数,不然this指向有问题
                     this.btext = message      
                })
           }
        }
    }
    </script>
    

    这样的话点击组件A里面的按钮,组件B即可获取A组件传来的值。👌

    相关文章

      网友评论

          本文标题:vue 兄弟组件传值的方法

          本文链接:https://www.haomeiwen.com/subject/efwioqtx.html