栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > Web开发 > Vue.js

Vue组件通信

Vue.js 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Vue组件通信

  • 1) 父组件给子组件传值

利用Vue的组件机制,父亲组件通过 v-bind指令给子组件绑定一个属性,属性值为父组件要传递的数据(变量也可以),若父亲组件中对应的数据改变,子组件中同样会改变。

传递  父亲组件给子组件绑定一个属性:如下图

//传递 messageFromParent这个变量。//传递一个常量。

子组件接收  父亲组件给子组件绑定一个属性:如下图

props 是父组件用来传递数据的一个自定义属性,这里定义组件要接收的属性及属性的校验(关于属性校验请自行看官方的文档)

Vue.component('child',{
    props:['msg'],
});

相关示例代码


  
    我是父亲节点
    
    点我改变消息内容,子组件内信息同时会改变
  


  
    {{msg}}
  
//子组件Vue.component('child',{
    props:['msg'],
    template:"#child"});//父亲组件Vue.component('parent',{
data(){  return {
    messageFromParent:"我是从父亲来的文字"
  }
},
template:'#parent',
methods:{
    changeMsg:function(){
        this.messageFromParent="传递过来的数据改变咯";
    }
}
});//建立vue实例var vm=new Vue({
  el:"#app",
  data:{

  }
});
  • 2)  子组件给父亲组件传值

  
  
    我是父亲节点
    传递的信息显示在这:{{message}}
    
    
  
  
    点我给父亲组件传值
  
//子组件Vue.component('child',{    template:"#child",    methods: {
      sendMsg() {        //发送信息
        this.$emit('diyevname','子组件发过来的信息');
      }
    }
});//父亲组件Vue.component('parent',{
data(){  return {    message:"我是初始消息"
  }
},template:'#parent',methods:{
    changeMsg(newmsg){        this.message=newmsg;
    }
}
});//建立vue实例var vm=new Vue({  el:"#app",  data:{}
});
  • 3)  非父子关系组件通信

原理:通过 事件中心 去注册事件监听及事件的触发。因为每个 Vue 实例都实现了事件接口(Events interface),通过这个可以实现事件的监听及触发。

  • vue 代码

//新建事件中心var EVENT=new Vue();//全局组件AVue.component('p-a',{template:'

我是A组件

点我向B组件发送信息',methods:{   add(){    //通过事件中心触发事件     EVENT.$emit('add',     {      id:21,      content:"花果山水帘洞111111",      time:'2016-12-13  12:14:56'     });   } } });//全局组件BVue.component('p-b',{ data(){  return {    msg:'我未接收到事件呢'   } },template:"

我是B组件,我负责接收事件

{{msg}}", created(){    var _self=this;    //创建组件之后监听事件     EVENT.$on('add',function(data){       _self.msg="我接收到事件了,事件参数"+JSON.stringify(data);     }); } });//挂载vue viewModel到DOM =>相当于 ng-app  var vm=new Vue({    el:"#app",    data:{        msgs:[],        title:'首页'     }  });
  • Html

  
  



作者:小枫学幽默
链接:https://www.jianshu.com/p/09cff0f089f6


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/241456.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号