一般同级传递都是指的是子组件与子组件之间的传递,因为父亲只有一个,那就是Vue实例。
如果想把cpn1的数据传给cpn2,
这里需要创建一个空实例Vue对象,然后利用事件方法
e
m
i
t
(
"
自
定
义
参
数
名
"
,
"
需
要
传
递
的
数
据
"
)
,
然
后
将
空
对
象
这
个
emit("自定义参数名","需要传递的数据"), 然后将空对象这个
emit("自定义参数名","需要传递的数据"),然后将空对象这个emit(),整体写在函数内。这样他的数据就会传出去了。谁来接受呢?另一个同级组件需要用钩子函数mounted,这个钩子函数的意思是初始化页面完成后,再对html的dom节点进行一些需要的操作。
在mounted钩子函数内,用空实例Vue对象调用
o
n
(
"
上
一
个
组
件
的
自
定
义
参
数
名
"
,
"
回
调
函
数
"
)
。
步
骤
:
1.
创
建
一
个
空
实
例
的
v
u
e
对
象
2
、
在
需
要
传
值
的
组
件
中
用
.
on("上一个组件的自定义参数名","回调函数")。 步骤: 1. 创建一个空实例的vue对象 2、在需要传值的组件中用.
on("上一个组件的自定义参数名","回调函数")。步骤:1.创建一个空实例的vue对象2、在需要传值的组件中用.emit触发一个自定义事件,并传递参数
3、在需要接收数据的组件中用.$on监听自定义事件,并在回调函数中处理传递过来的参数
子组件cpn1把数据message传给子组件cpn2
<div id="app">
<cpn1></cpn1>
<cpn2></cpn2>
</div>
<template id="cpn1">
<p @click="pclick">send</p>
</template>
<template id="cpn2">
<p></p>
</template>
//子组件1
const cpn1 = {
template:'#cpn1',
data () {
return {
message:'消息1'
}
},
methods: {
pclick(){
console.log('555');
nullVm.$emit('s1',this.message)
}
}
}
//子组件2
const cpn2 = {
template:'#cpn2',
data () {
return {
// message:'消息2'
}
},
mounted () {
nullVm.$on('s1',params=>{
console.log(params);
})
}
}
let nullVm = new Vue({})
var vm = new Vue({
el:'#app',
components: {
cpn1,
cpn2
}
})