您的位置:首页 > 产品设计 > UI/UE

Vue 组件间的通讯

2017-04-28 19:34 411 查看
一、首先是父组件传给子组件

var startVue_1 = new Vue({
el:'#container-1',
data:{
g3:'3'
},
components: {
'lchild':{
props:['papa'],
template:"<input class = 'input' v-model='papa' type='text' placeholder='我局部子组件'></input>"
}
},
});


// html
<div class = 'container' id='container-1'>
<lchild :papa='g3'></lchild>
</div>


这样lchild这个组件就接收到了g3的值,并绑定;

二、子组件传给父组件

修改一下代码:

var startVue_1 = new Vue({
el:'#container-1',
data:{
g3:'3'
},
components: {
'my-component': board,
'lchild':{
props:['papa'],
data:function(){
return {
g6:'6'
}
},
template:"<input class = 'input'    v-model='g6' @blur='backData' placeholder='我局部子组件'></input>",
methods: {
backData:function(){
// 派发事件 back,在父组件处接收
this.$emit('back',this.g6)
}
}
}
},
methods:{
//  接收到back事件执行setD
setD:function(e){
this.g3 = e
}
}
});


然后在父组件处监听事件:

<input v-model='g3' placeholder='我是直接写出来的' class = 'input'>

<lchild @back='setD'></lchild>


执行,看下结果:(结果正常,子组件传值成功)



三、子组件与子组件之间的通讯

这里只是简单地结合一二,把值传给父组件,再把值传给另外一个子组件

Vue.component('gchild',{
template:"<div class = 'inputItem'><h4>全局:</h4><input class = 'input' type='text' v-model='data' placeholder='我全局子组件'></input></div>",
props:['data']
})


再在html处绑定:

<gchild :data='g3'></gchild>


执行:



四、两个不同实例的传值

其实这个最简单,和普通的对象传值一样,直接拿到

var startVue_1 = new Vue({
el:'#container-1',
data:{
g3:'3'
}
})

var startVue_2 = new Vue({
el:'#container-2',
data:{
// 这样就拿到了startVue_1的g3的值
g2:startVue_1.$data.g3
}
})
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: