vue.js 兄弟组件传值
2017-08-25 13:40
537 查看
1、兄弟之间传递数据需要借助于事件车,通过事件车的方式传递数据
2、创建一个Vue的实例,让各个兄弟共用同一个事件机制。
3、传递数据方,通过一个事件触发bus.$emit(方法名,传递的数据)。
4、接收数据方,通过mounted(){}触发bus.$on(方法名,function(接收数据的参数){用该组件的数据接收传递过来的数据}),此时函数中的this已经发生了改变,可以使用箭头函数。
实例如下:
我们可以创建一个单独的js文件eventVue.js,内容如下
假如父组件如下:
子组件a如下:
子组件b如下:
这样在子组件a里面点击函数就可以改变兄弟组件b里面的值了。
2、创建一个Vue的实例,让各个兄弟共用同一个事件机制。
3、传递数据方,通过一个事件触发bus.$emit(方法名,传递的数据)。
4、接收数据方,通过mounted(){}触发bus.$on(方法名,function(接收数据的参数){用该组件的数据接收传递过来的数据}),此时函数中的this已经发生了改变,可以使用箭头函数。
实例如下:
我们可以创建一个单独的js文件eventVue.js,内容如下
importVuefrom'vue'
exportdefaultnewVue
假如父组件如下:
<template> <components-a></components-a> <components-b></components-b> </template>
子组件a如下:
<template>
<divclass="components-a">
<button@click="abtn">A按钮</button>
</div>
</template>
<script>
importeventVuefrom'../../js/event.js'
exportdefault{
name:'app',
data(){
return{
‘msg':"我是组件A"
}
},
methods:{
abtn:function(){
eventVue.$emit("myFun",this.msg)//$emit这个方法会触发一个事件
}
}
}
</script>
子组件b如下:
<template>
<divclass="components-a">
<div>{{btext}}</div>
</div>
</template>
<script>
importeventVuefrom'../../js/event.js'
exportdefault{
name:'app',
data(){
return{
'btext':"我是B组件内容"
}
},
created:function(){
this.bbtn();
},
methods:{
bbtn:function(){
eventVue.$on("myFun",(message)=>{//这里最好用箭头函数,不然this指向有问题
this.btext=message
})
}
}
}
</script>
这样在子组件a里面点击函数就可以改变兄弟组件b里面的值了。
相关文章推荐
- Vue.js中兄弟组件之间互相传值
- vue 2 使用Bus.js进行兄弟(非父子)组件通信 简单案例
- vue 2 使用Bus.js进行兄弟(非父子)组件通信 简单案例
- vue 2 使用Bus.js进行兄弟(非父子)组件通信 简单案例
- vue 2 使用Bus.js进行兄弟(非父子)组件通信 简单案例
- Vue.js中兄弟组件之间互相传值实例
- vue.js几种不同组件(页面)间传值的方式
- VUE2.0 父组件传值给子组件初始化用
- vue2.0使用weui.js的uploader组件上传图片
- Vue.js的组件分发 之 作用域槽
- vue.js实战笔记:父子组件之间的那些事儿
- Vue.js 2.x之组件的定义和注册图文详解
- Vue结合原生js实现自定义组件自动生成
- 用Vue.js递归组件构建一个可折叠的树形菜单
- 用Vue.js递归组件构建一个可折叠的树形菜单
- vue.js内置组件之keep-alive组件使用
- vue.js的提示组件
- Vue 兄弟组件通信(不使用Vuex)
- Vuejs组件——slot内容分发
- vue.js 组件之间传递数据